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编写一个简单的FUSE文件系统的教程
Apr 02 Python
python中__call__内置函数用法实例
Jun 04 Python
详解Python 数据库的Connection、Cursor两大对象
Jun 25 Python
windows下python安装小白入门教程
Sep 18 Python
python实现微信自动回复及批量添加好友功能
Jul 03 Python
Django使用消息提示简单的弹出个对话框实例
Nov 15 Python
Python 生成一个从0到n个数字的列表4种方法小结
Nov 28 Python
Numpy一维线性插值函数的用法
Apr 22 Python
Python Flask异步发送邮件实现方法解析
Aug 01 Python
python实现简单贪吃蛇游戏
Sep 29 Python
python 窃取摄像头照片的实现示例
Jan 08 Python
python中pandas.read_csv()函数的深入讲解
Mar 29 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
为了这两部电子管收音机,买了6套全新电子管和10粒刻度盘灯泡
2021/03/02 无线电
PHP基础教程(php入门基础教程)一些code代码
2013/01/06 PHP
php中使用redis队列操作实例代码
2013/02/07 PHP
试用php中oci8扩展
2015/06/18 PHP
laravel Model 执行事务的实现
2019/10/10 PHP
laravel5.6中的外键约束示例
2019/10/23 PHP
基于jQuery的输入框在光标位置插入内容, 并选中
2011/10/29 Javascript
jQuery中trigger()方法用法实例
2015/01/19 Javascript
nodejs导出excel的方法
2015/06/30 NodeJs
基于jquery实现省市联动效果
2015/11/23 Javascript
基于jQuery Ajax实现上传文件
2016/03/24 Javascript
理解javascript中的闭包
2017/01/11 Javascript
如何使用CSS3+JQuery实现悬浮墙式菜单
2019/06/18 jQuery
JavaScript实现移动小精灵的案例代码
2020/12/12 Javascript
[45:46]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS DT
2014/05/23 DOTA
[27:28]Ti4 冒泡赛第二天 iG vs NEWBEE 1
2014/07/15 DOTA
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
2017/10/29 Python
Windows环境下python环境安装使用图文教程
2018/03/13 Python
使用python爬虫获取黄金价格的核心代码
2018/06/13 Python
如何优雅地处理Django中的favicon.ico图标详解
2018/07/05 Python
python引用(import)某个模块提示没找到对应模块的解决方法
2019/01/19 Python
python读取大文件越来越慢的原因与解决
2019/08/08 Python
基于h5py的使用及数据封装代码
2019/12/26 Python
python opencv实现直线检测并测出倾斜角度(附源码+注释)
2020/12/31 Python
pycharm Tab键设置成4个空格的操作
2021/02/26 Python
澳大利亚女士时装在线:Rockmans
2018/09/26 全球购物
澳大利亚个性化儿童礼品网站:Bright Star Kids
2019/06/14 全球购物
List、Map、Set三个接口,存取元素时,各有什么特点?
2015/09/27 面试题
文案策划求职信
2014/03/18 职场文书
运输企业安全生产责任书
2014/07/28 职场文书
党员剖析材料范文
2014/09/30 职场文书
长城导游词400字
2015/01/30 职场文书
写给同学的新学期寄语
2015/02/27 职场文书
关于感恩的素材句子(38句)
2019/11/11 职场文书
只需要100行Python代码就可以实现的贪吃蛇小游戏
2021/05/27 Python
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
2021/07/01 MySQL