Python复制目录结构脚本代码分享


Posted in Python onMarch 06, 2015

引言

有个需要,需要把某个目录下的目录结构进行复制,不要文件,当目录结构很少的时候可以手工去建立,当目录结构复杂,目录层次很深,目录很多的时候,这个时候要是还是手动去建立的话,实在不是一种好的方法,弄不好会死人的。写一个python脚本来处理吧。

首先了解

写python脚本前,先了解几个东西

#!/usr/bin/python

这个东西写过脚本的人都知道,用来标明该脚本的执行器,类似的还有
#!/bin/bash       通过bash来执行

#!/usr/local/php/bin/php 通过php执行器来执行    

 
# -*- coding: utf-8 -*-

这个是设置脚本的编码格式,不然非英文可能会出现乱码

匿名函数lambda

#lambda很好用,创建匿名函数很方便

g = lambda x,y : x+y

g(3,5) #返回8

匿名函数分为四部分,标识 lambda,分号 :,参数 x,y,操作 x+y

除了这个之外,还有函数map、filter一个进行映射,一个进行过滤

__name__=="__main__"

一个文件就是一个模块,在python中每个模块都有一个__name__属性,属性的值取决于如何使用该模块,一般有两种使用方式,直接在命令行运行,这个时候__name__值为__main__,当import使用的时候,__name__值就是当前模块的名称(不带扩展名),因此可以通过这个判断是否是直接在命令行运行程序,以便做一些脚本使用。
import os

import sys

还有这两个模块,os包含一些操作系统功能,比如说遍历文件夹,拼接路径等等,sys模块包含系统函数,我这里只用来获取脚本后面的参数

编码

#!/usr/bin/python

# -*- coding: utf-8 -*-

#Filename:floders.py
import os

import sys
source = os.path.realpath(sys.argv[1]) 

target = os.path.realpath(sys.argv[2])
def isdir(x):

    return os.path.isdir(x) and x != '.svn'

def mkfloders(src,tar):

    paths = os.listdir(src)

    paths = map(lambda name:os.path.join(src,name),paths)

    paths = filter(isdir, paths)

    if(len(paths)<=0):

        return

    for i in paths:

        (filepath, filename)=os.path.split(i)

        targetpath = os.path.join(tar,filename)

        not os.path.isdir(targetpath) and os.mkdir(targetpath)

        mkfloders(i,targetpath)
if __name__=="__main__":

    if(os.path.isdir(source)):

        if(target.find(source) == 0):

            print("不能将生成的新目录放在源目录下")

        else:

            if not os.path.isdir(target):

                os.mkdir(target)

            mkfloders(source,target)

    else:

        print("源文件夹不存在")

使用

使用很简单:

#在当前文件夹下执行

./folders.py ./ /tmp/yyyyy
#执行完之后就会在/tmp下创建yyyyy目录,目录中包含上面的第一个文件夹中的目录结构

这个地方有两个要注意的地方,不能将创建后的目录放在要复制的目录中或者其子目录中

总结

在做这个的时候遇到了这个问题 /usr/bin/python^M: bad interpreter: No such file or directory ,这个问题看样子是编码的问题,在每行后面添加了个字符,查资料后,原来是由于我从windows下直接把程序复制到linux下的编码出现了问题,解决方法很简单:vi folders.py之后,在命令行下输入

:set ff #结果表示编码平台,应该是fileformat=dos
:set fileformat=unix #设置编码到unix平台
:set ff #这个时候再去查看文件编码,应该是fileformat=unix
Python 相关文章推荐
python实现可将字符转换成大写的tcp服务器实例
Apr 29 Python
python实现同时给多个变量赋值的方法
Apr 30 Python
详细解读Python中的__init__()方法
May 02 Python
在Ubuntu系统下安装使用Python的GUI工具wxPython
Feb 18 Python
python开发环境PyScripter中文乱码问题解决方案
Sep 11 Python
Python搭建FTP服务器的方法示例
Jan 19 Python
TensorFlow变量管理详解
Mar 10 Python
python 列表,数组,矩阵两两转换tolist()的实例
Apr 04 Python
python爬虫 爬取超清壁纸代码实例
Aug 16 Python
关于pytorch多GPU训练实例与性能对比分析
Aug 19 Python
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
Dec 10 Python
Python try except else使用详解
Jan 12 Python
python获取android设备的GPS信息脚本分享
Mar 06 #Python
Python写的英文字符大小写转换代码示例
Mar 06 #Python
Python脚本实现集群检测和管理功能
Mar 06 #Python
Python守护进程(daemon)代码实例
Mar 06 #Python
Python类方法__init__和__del__构造、析构过程分析
Mar 06 #Python
Python列表生成器的循环技巧分享
Mar 06 #Python
Python装饰器使用示例及实际应用例子
Mar 06 #Python
You might like
咖啡的化学
2021/03/03 咖啡文化
PHP中如何调用webservice的实例参考
2013/04/25 PHP
php实现图片添加水印功能
2014/02/13 PHP
Zend Framework教程之资源(Resources)用法实例详解
2016/03/14 PHP
php+jquery+html实现点击不刷新加载更多的实例代码
2016/08/12 PHP
使用SyntaxHighlighter实现HTML高亮显示代码的方法
2010/02/04 Javascript
jquery手风琴特效插件
2015/02/04 Javascript
JavaScript获得url所有参数键值表的方法
2015/03/21 Javascript
JS判断字符串包含的方法
2015/05/05 Javascript
vue基于Element构建自定义树的示例代码
2017/09/19 Javascript
vue返回上一页面时回到原先滚动的位置的方法
2018/12/20 Javascript
js实现web调用摄像头 js截取视频画面
2019/04/21 Javascript
scrapyd schedule.json setting 传入多个值问题
2019/08/07 Javascript
java实现单链表增删改查的实例代码详解
2019/08/30 Javascript
js回溯法计算最佳旅行线路代码实例
2019/09/11 Javascript
微信小程序授权登陆及每次检查是否授权实例代码
2019/09/18 Javascript
vue 图片裁剪上传组件的实现
2020/11/12 Javascript
Python lambda和Python def区别分析
2014/11/30 Python
Python简单实现安全开关文件的两种方式
2016/09/19 Python
Python使用struct处理二进制的实例详解
2017/09/11 Python
Python操作Sql Server 2008数据库的方法详解
2018/05/17 Python
Django中自定义查询对象的具体使用
2019/10/13 Python
TensorFlow实现保存训练模型为pd文件并恢复
2020/02/06 Python
基于python模拟TCP3次握手连接及发送数据
2020/11/06 Python
吉尔德利巧克力公司:Ghirardelli Chocolate Company
2019/03/27 全球购物
澳大利亚领先的女帽及配饰公司:Morgan&Taylor
2019/12/01 全球购物
环保倡议书范文
2014/05/12 职场文书
关于感恩的演讲稿500字
2014/08/26 职场文书
奥巴马当选演讲稿
2014/09/10 职场文书
孔庙导游词
2015/02/04 职场文书
党校个人总结
2015/03/04 职场文书
学校办公室主任岗位职责
2015/04/01 职场文书
初一年级组工作总结
2015/08/12 职场文书
土木工程生产实习心得体会
2016/01/22 职场文书
python编程项目中线上问题排查与解决
2021/11/01 Python
Go归并排序算法的实现方法
2022/04/06 Golang