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 相关文章推荐
python2.7删除文件夹和删除文件代码实例
Dec 18 Python
零基础写python爬虫之爬虫编写全记录
Nov 06 Python
Python进阶学习之特殊方法实例详析
Dec 01 Python
Python cookbook(数据结构与算法)从字典中提取子集的方法示例
Mar 22 Python
利用python实现微信头像加红色数字功能
Mar 26 Python
快速排序的四种python实现(推荐)
Apr 03 Python
Python学习笔记之文件的读写操作实例分析
Aug 07 Python
python实现读取excel文件中所有sheet操作示例
Aug 09 Python
Pyqt5自适应布局实例
Dec 13 Python
python中的 zip函数详解及用法举例
Feb 16 Python
python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例
Apr 02 Python
基于Python脚本实现邮件报警功能
May 20 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/12/30 PHP
实现PHP框架系列文章(6)mysql数据库方法
2016/03/04 PHP
配置Nginx+PHP的正确思路与过程
2016/05/10 PHP
php无法连接mysql数据库的正确解决方法
2016/07/01 PHP
PHP批量获取网页中所有固定种子链接的方法
2016/11/18 PHP
php UNIX时间戳用法详解
2017/02/16 PHP
PHP实现微信退款的方法示例
2019/03/26 PHP
ThinkPHP5.1验证码功能实现的示例代码
2020/06/08 PHP
用javascript动态调整iframe高度的代码
2007/04/10 Javascript
jQuery基础知识filter()和find()实例说明
2010/07/06 Javascript
JavaScript中使用构造函数实现继承的代码
2010/08/12 Javascript
原生js拖拽(第一课 未兼容)拖拽思路
2013/03/29 Javascript
JavaScript检测鼠标移动方向的方法
2015/05/22 Javascript
js 求时间差的实现代码
2016/04/26 Javascript
js中遍历对象的属性和值的方法
2016/07/27 Javascript
谈谈第三方App接入微信登录 解读
2016/12/27 Javascript
bootstrap表格分页实例讲解
2016/12/30 Javascript
jquery.cookie.js的介绍与使用方法
2017/02/09 Javascript
Vue 使用 Mint UI 实现左滑删除效果CellSwipe
2018/04/27 Javascript
element-ui循环显示radio控件信息的方法
2018/08/24 Javascript
详解Vue中的watch和computed
2020/11/09 Javascript
解决js中的setInterval清空定时器不管用问题
2020/11/17 Javascript
[02:15]2014DOTA2国际邀请赛 专访LGD.lin小兔子是大腿
2014/07/14 DOTA
Python中的XML库4Suite Server的介绍
2015/04/14 Python
python3使用PyMysql连接mysql数据库实例
2017/02/07 Python
利用Pycharm断点调试Python程序的方法
2018/11/29 Python
pyqt5与matplotlib的完美结合实例
2019/06/21 Python
基于Python执行dos命令并获取输出的结果
2019/12/30 Python
Python基础之函数原理与应用实例详解
2020/01/03 Python
全球领先的鞋类零售商:The Walking Company
2016/07/21 全球购物
莫斯科高科技在线商店:KremlinStore
2019/03/13 全球购物
波兰化妆品和护肤品购物网站:eKobieca
2019/08/30 全球购物
金融学专业大学生职业生涯规划
2014/03/07 职场文书
高三学习决心书
2014/03/11 职场文书
社团活动总结书
2014/06/27 职场文书
2019年让高校“心动”的自荐信
2019/03/25 职场文书