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 正则式使用心得
May 07 Python
python爬取网站数据保存使用的方法
Nov 20 Python
python调用windows api锁定计算机示例
Apr 17 Python
初步解析Python中的yield函数的用法
Apr 03 Python
Django代码性能优化与Pycharm Profile使用详解
Aug 26 Python
python使用folium库绘制地图点击框
Sep 21 Python
python采集微信公众号文章
Dec 20 Python
django 捕获异常和日志系统过程详解
Jul 18 Python
python返回数组的索引实例
Nov 28 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
Oct 27 Python
Elasticsearch 聚合查询和排序
Apr 19 Python
python三子棋游戏
May 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+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
2011/12/28 PHP
ecshop 批量上传(加入自定义属性)
2012/03/20 PHP
基于PHP magic_quotes_gpc的使用方法详解
2013/06/24 PHP
ThinkPHP实现多数据库连接的解决方法
2014/07/01 PHP
PHP实现设计模式中的抽象工厂模式详解
2014/10/11 PHP
PHP与服务器文件系统的简单交互
2016/10/21 PHP
php下载远程大文件(获取远程文件大小)的实例
2017/06/17 PHP
Yii框架学习笔记之应用组件操作示例
2019/11/13 PHP
往光标所在位置插入值的js代码
2013/09/22 Javascript
JavaScript实现的类字典插入或更新方法实例
2015/07/10 Javascript
jQuery实现滚动条滚动到子元素位置(方便定位)
2017/01/08 Javascript
详解JS中的快速排序与冒泡
2017/01/10 Javascript
微信小程序实现打开内置地图功能【附源码下载】
2017/12/07 Javascript
Chart.js 轻量级HTML5图表绘制工具库(知识整理)
2018/05/22 Javascript
详解vue-cli 本地开发mock数据使用方法
2018/05/29 Javascript
js form表单input框限制20个字符,10个汉字代码实例
2019/04/12 Javascript
解决vue+router路由跳转不起作用的一项原因
2020/07/19 Javascript
python在控制台输出进度条的方法
2015/06/20 Python
Django中Forms的使用代码解析
2018/02/10 Python
Python生成器generator用法示例
2018/08/10 Python
解决PySide+Python子线程更新UI线程的问题
2019/01/11 Python
python实现五子棋小程序
2019/06/18 Python
在python中实现同行输入/接收多个数据的示例
2019/07/20 Python
Python实现字符串中某个字母的替代功能
2019/10/21 Python
Pytorch基本变量类型FloatTensor与Variable用法
2020/01/08 Python
python3利用Axes3D库画3D模型图
2020/03/25 Python
python批量修改交换机密码的示例
2020/09/22 Python
python3实现名片管理系统(控制台版)
2020/11/29 Python
python网络爬虫实现发送短信验证码的方法
2021/02/25 Python
Clarins娇韵诗美国官网:法国天然护肤品牌
2016/09/26 全球购物
函授毕业生自我鉴定
2013/11/06 职场文书
七年级英语教学反思
2014/01/15 职场文书
四年级语文教学反思
2014/02/05 职场文书
会计助理岗位职责
2014/02/17 职场文书
考察现实表现材料
2014/05/19 职场文书
2015质检员个人年终工作总结
2015/10/23 职场文书