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 基础学习第二弹 类属性和实例属性
Aug 27 Python
python生成指定长度的随机数密码
Jan 23 Python
Python可跨平台实现获取按键的方法
Mar 05 Python
Python实现拷贝多个文件到同一目录的方法
Sep 19 Python
对python当中不在本路径的py文件的引用详解
Dec 15 Python
Python Pandas中根据列的值选取多行数据
Jul 08 Python
win10环境下配置vscode python开发环境的教程详解
Oct 16 Python
Python关于反射的实例代码分享
Feb 20 Python
python实现文法左递归的消除方法
May 22 Python
python操作ini类型配置文件的实例教程
Oct 30 Python
Python使用海龟绘图实现贪吃蛇游戏
Jun 18 Python
Python面向对象之成员相关知识总结
Jun 24 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 空格,换行,跳格使用说明
2009/12/18 PHP
php使用qr生成二维码的示例分享
2014/01/20 PHP
php的ajax简单实例
2014/02/27 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
2014/04/28 PHP
php组合排序简单实现方法
2016/10/15 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
简介JavaScript中的push()方法的使用
2015/06/09 Javascript
基于canvas实现的钟摆效果完整实例
2016/01/26 Javascript
javascript实现tab响应式切换特效
2016/01/29 Javascript
JavaScript reduce和reduceRight详解
2016/10/24 Javascript
js使用i18n实现页面国际化的方法
2017/05/09 Javascript
详解vue slot插槽的使用方法
2017/06/13 Javascript
微信小程序使用navigateTo数据传递的实例
2017/09/26 Javascript
vue-cli项目无法用本机IP访问的解决方法
2018/09/20 Javascript
详解webpack4之splitchunksPlugin代码包分拆
2018/12/04 Javascript
Windows下Node爬虫神器Puppeteer安装记
2019/01/09 Javascript
vue实现动态显示与隐藏底部导航的方法分析
2019/02/11 Javascript
微信小程序 Storage更新详解
2019/07/16 Javascript
Vue实战教程之仿肯德基宅急送App
2019/07/19 Javascript
vue+elementUI中表格高亮或字体颜色改变操作
2020/11/02 Javascript
Python使用Matplotlib实现Logos设计代码
2017/12/25 Python
Python实现将字符串的首字母变为大写,其余都变为小写的方法
2019/06/11 Python
Python ORM编程基础示例
2020/02/02 Python
python绘制雷达图实例讲解
2021/01/03 Python
Lookfantastic瑞典:英国知名美妆购物网站
2018/04/06 全球购物
Tod’s英国官方网站:意大利奢华手工制作手袋和鞋履
2019/03/15 全球购物
英国领先的在线高尔夫商店:Scottsdale Golf
2019/08/26 全球购物
利物浦足球俱乐部官方商店(美国):Liverpool FC US
2019/10/09 全球购物
美国在线艺术商店:HandmadePiece
2020/11/06 全球购物
2014年社区学雷锋活动总结
2014/03/09 职场文书
行政监察建议书
2014/05/19 职场文书
敬老月活动总结
2014/08/28 职场文书
2014年小学教师工作自我评价
2014/09/22 职场文书
2015年工程师工作总结
2015/04/30 职场文书
拯救大兵瑞恩观后感
2015/06/09 职场文书
python scipy 稀疏矩阵的使用说明
2021/05/26 Python