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解决N阶台阶走法问题的方法分析
Dec 28 Python
django启动uwsgi报错的解决方法
Apr 08 Python
详解Python3的TFTP文件传输
Jun 26 Python
python 简单照相机调用系统摄像头实现方法 pygame
Aug 03 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
Dec 06 Python
Python Flask框架模板操作实例分析
May 03 Python
Python多进程方式抓取基金网站内容的方法分析
Jun 03 Python
python 数据生成excel导出(xlwt,wlsxwrite)代码实例
Aug 23 Python
python tkinter之顶层菜单、弹出菜单实例
Mar 04 Python
pandas的resample重采样的使用
Apr 24 Python
如何用PyPy让你的Python代码运行得更快
Dec 02 Python
详解Pymongo常用查询方法总结
Jan 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
php时间戳格式化显示友好的时间函数分享
2014/10/21 PHP
PHP新特性详解之命名空间、性状与生成器
2017/07/18 PHP
laravel5.2表单验证,并显示错误信息的实例
2019/09/29 PHP
详解使用php-cs-fixer格式化代码
2020/09/16 PHP
encode脚本和normal脚本混用的问题与解决方法
2007/03/08 Javascript
再论Javascript的类继承
2011/03/05 Javascript
JavaScript 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)
2012/04/07 Javascript
javascript向flash swf文件传递参数值注意细节
2012/12/11 Javascript
js 实现菜单左右滚动显示示例介绍
2013/11/21 Javascript
js星星评分效果
2014/07/24 Javascript
JS使用for循环遍历Table的所有单元格内容
2014/08/21 Javascript
Angularjs---项目搭建图文教程
2016/07/08 Javascript
整理一些最近经常遇到的前端面试题
2017/04/25 Javascript
深入理解Node module模块
2018/03/26 Javascript
手淘flexible.js框架使用和源代码讲解小结
2018/10/15 Javascript
vue之a-table中实现清空选中的数据
2019/11/07 Javascript
js实现限定区域范围拖拉拽效果
2020/11/20 Javascript
ES5和ES6中类的区别总结
2020/12/21 Javascript
浅谈Python黑帽子取代netcat
2018/02/10 Python
python实现微信发送邮件关闭电脑功能
2018/02/22 Python
Python+request+unittest实现接口测试框架集成实例
2018/03/16 Python
Python读取txt内容写入xls格式excel中的方法
2018/10/11 Python
Python实现简单石头剪刀布游戏
2021/01/20 Python
基于Django的乐观锁与悲观锁解决订单并发问题详解
2019/07/31 Python
Django框架创建项目的方法入门教程
2019/11/04 Python
Python日志器使用方法及原理解析
2020/09/27 Python
香港永安旅游网:Wing On Travel
2017/04/10 全球购物
悬挂训练绳:TRX
2017/12/14 全球购物
美国领先的商务贺卡出版商:The Gallery Collection
2018/02/13 全球购物
工程管理英文求职信
2014/03/18 职场文书
2015年教学工作总结
2015/04/02 职场文书
2019最新版火锅店的创业计划书 !
2019/07/12 职场文书
2019关于垃圾分类处理的调查报告
2019/12/26 职场文书
使用Redis实现点赞取消点赞的详细代码
2022/03/20 Redis
《战锤40K:暗潮》跳票至9月 公布新宣传片
2022/04/03 其他游戏
Golang jwt身份认证
2022/04/20 Golang