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 logging模块学习笔记
May 24 Python
详解Python的Django框架中的模版继承
Jul 16 Python
整理Python 常用string函数(收藏)
May 30 Python
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
Aug 02 Python
Python重新加载模块的实现方法
Oct 16 Python
Python利用pandas处理Excel数据的应用详解
Jun 18 Python
ubuntu 安装pyqt5和卸载pyQt5的方法
Mar 24 Python
python读取mysql数据绘制条形图
Mar 25 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
Apr 27 Python
详解Python设计模式之策略模式
Jun 15 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
Dec 05 Python
python如何利用cv2模块读取显示保存图片
Jun 04 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 使用curl提交json格式数据
2013/06/29 PHP
PHP把小数转成整数3种方法
2014/06/30 PHP
PHP处理数组和XML之间的互相转换
2016/06/02 PHP
JS日历 推荐
2006/12/03 Javascript
js实现运行代码需要刷新的解决方法
2007/08/18 Javascript
用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
2009/12/27 Javascript
javascript中注册和移除事件的4种方式
2013/03/20 Javascript
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
2013/04/26 Javascript
js下拉菜单语言选项简单实现
2013/09/23 Javascript
JavaScript 动态加载脚本和样式的方法
2015/04/13 Javascript
浅谈JavaScript的Polymer框架中的事件绑定
2015/07/29 Javascript
点评js异步加载的4种方式
2015/12/22 Javascript
倾力总结40条常见的移动端Web页面问题解决方案
2016/05/24 Javascript
拥Bootstrap入怀——导航栏篇
2016/05/30 Javascript
深入理解逻辑表达式的用法 与或非的用法
2016/06/06 Javascript
简单实现js浮动框
2016/12/13 Javascript
JavaScript设计模式之构造函数模式实例教程
2018/07/02 Javascript
[02:01]大师之路——DOTA2完美大师赛11月论剑上海
2017/11/06 DOTA
python构建深度神经网络(DNN)
2018/03/10 Python
对Python3之方法的覆盖与super函数详解
2019/06/26 Python
python+jinja2实现接口数据批量生成工具
2019/08/28 Python
python 解决tqdm模块不能单行显示的问题
2020/02/19 Python
解决Keras使用GPU资源耗尽的问题
2020/06/22 Python
全球知名旅游社区巴西站点:TripAdvisor巴西
2016/07/21 全球购物
HomeAway澳大利亚:预订你的度假屋,公寓、度假村、别墅等
2019/02/20 全球购物
优秀演讲稿范文
2013/12/29 职场文书
满月酒答谢词
2014/01/14 职场文书
高中生职业规划范文
2014/03/09 职场文书
保密承诺书
2014/03/27 职场文书
我爱我校演讲稿
2014/05/21 职场文书
2014年9.18纪念日演讲稿
2014/09/14 职场文书
2015秋季运动会通讯稿
2015/07/18 职场文书
建立共青团委员会的请示
2019/04/02 职场文书
Python Django搭建文件下载服务器的实现
2021/05/10 Python
oracle设置密码复杂度及设置超时退出的功能
2022/06/28 Oracle
教你nginx跳转配置的四种方式
2022/07/07 Servers