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中的rjust()方法使用详解
May 19 Python
python 异常处理总结
Oct 18 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
May 11 Python
python基于ID3思想的决策树
Jan 03 Python
Python实现字典按key或者value进行排序操作示例【sorted】
May 03 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
Aug 26 Python
Python读取YAML文件过程详解
Dec 30 Python
Python3搭建http服务器的实现代码
Feb 11 Python
打印tensorflow恢复模型中所有变量与操作节点方式
May 26 Python
Python局部变量与全局变量区别原理解析
Jul 14 Python
python+pygame实现坦克大战小游戏的示例代码(可以自定义子弹速度)
Aug 11 Python
Python unittest discover批量执行代码实例
Sep 08 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采用get获取url汉字出现乱码的解决方法
2014/11/13 PHP
PHP反射原理与用法深入分析
2019/09/28 PHP
js 效率组装字符串 StringBuffer
2009/12/23 Javascript
一段批量给页面上的控件赋值js
2010/06/19 Javascript
jQuery 表单验证扩展(四)
2010/10/20 Javascript
js 调用本地exe的例子(支持IE内核的浏览器)
2012/12/26 Javascript
基于jquery实现控制经纬度显示地图与卫星
2013/05/20 Javascript
深入解析JavaScript中的立即执行函数
2016/05/21 Javascript
jQuery插件FusionCharts实现的3D柱状图效果实例【附demo源码下载】
2017/03/03 Javascript
AngularJS动态添加数据并删除的实例
2018/02/27 Javascript
脚手架vue-cli工程webpack的基本用法详解
2018/09/29 Javascript
Js 利用正则表达式和replace函数获取string中所有被匹配到的文本(推荐)
2018/10/28 Javascript
node.js连接mysql与基本用法示例
2019/01/05 Javascript
vue.js实现三级菜单效果
2019/10/19 Javascript
js通过循环多张图片实现动画效果
2019/12/19 Javascript
原生JS实现pc端轮播图效果
2020/12/21 Javascript
Python只用40行代码编写的计算器实例
2017/05/10 Python
python+matplotlib绘制旋转椭圆实例代码
2018/01/12 Python
在Python中使用defaultdict初始化字典以及应用方法
2018/10/31 Python
Python自定义一个类实现字典dict功能的方法
2019/01/19 Python
树莓派+摄像头实现对移动物体的检测
2019/06/22 Python
python3中eval函数用法使用简介
2019/08/02 Python
Python能做什么
2020/06/02 Python
学python需要去培训机构吗
2020/07/01 Python
HTML5标签使用方法详解
2015/11/27 HTML / CSS
英国音乐设备和乐器商店:Gear4music
2017/10/16 全球购物
英国领先的维生素和营养补充剂直接供应商:Healthspan
2019/04/22 全球购物
英国领先的男装设计师服装独立零售商:Repertoire Fashion
2020/10/19 全球购物
服务员岗位责任制
2014/02/11 职场文书
交通事故死亡赔偿协议书
2014/12/03 职场文书
模范班主任事迹材料
2014/12/17 职场文书
交通安全月活动总结
2015/05/08 职场文书
三国演义读书笔记
2015/06/25 职场文书
Python Pycharm虚拟下百度飞浆PaddleX安装报错问题及处理方法(亲测100%有效)
2021/05/24 Python
Python基础之变量的相关知识总结
2021/06/23 Python