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中使用mongoengine操作MongoDB教程
Apr 24 Python
SQLite3中文编码 Python的实现
Jan 11 Python
PyTorch上搭建简单神经网络实现回归和分类的示例
Apr 28 Python
Python/ArcPy遍历指定目录中的MDB文件方法
Oct 27 Python
python基于C/S模式实现聊天室功能
Jan 09 Python
python英语单词测试小程序代码实例
Sep 09 Python
导入tensorflow时报错:cannot import name 'abs'的解决
Oct 10 Python
Python基于pandas爬取网页表格数据
May 11 Python
Python如何实现机器人聊天
Sep 10 Python
Python tkinter制作单机五子棋游戏
Sep 14 Python
python 提高开发效率的5个小技巧
Oct 19 Python
Python虚拟环境virtualenv是如何使用的
Jun 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
PDO版本问题 Invalid parameter number: no parameters were bound
2013/01/06 PHP
浅谈PHP中Stream(流)
2015/06/08 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
2015/06/19 PHP
PHP如何将图片文件上传到另外一台服务器上
2019/08/26 PHP
Javascript的各种节点操作实例演示代码
2012/06/27 Javascript
JavaScript网页定位详解
2014/01/13 Javascript
Jquery设置attr的disabled属性控制某行显示或者隐藏
2014/09/25 Javascript
JS实现超炫网页烟花动画效果的方法
2015/03/02 Javascript
JavaScript获取一个范围内日期的方法
2015/04/24 Javascript
JavaScript使用cookie实现记住账号密码功能
2015/04/27 Javascript
详解JavaScript的策略模式编程
2015/06/24 Javascript
javascript日期计算实例分析
2015/06/29 Javascript
js实现控制textarea输入字符串的个数,鼠标按下抬起判断输入字符数
2016/10/25 Javascript
利用js查找数组中指定元素并返回该元素的所有索引示例
2017/03/29 Javascript
在JS中如何把毫秒转换成规定的日期时间格式实例
2017/05/11 Javascript
详解Vue.js组件可复用性的混合(mixin)方式和自定义指令
2017/09/06 Javascript
前端axios下载excel文件(二进制)的处理方法
2018/07/31 Javascript
vue中使用gojs/jointjs的示例代码
2018/08/24 Javascript
node获取客户端ip功能简单示例
2019/08/24 Javascript
天翼开放平台免费短信验证码接口使用实例
2013/12/18 Python
使用Python脚本操作MongoDB的教程
2015/04/16 Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
2018/02/21 Python
Python数据可视化之画图
2019/01/15 Python
为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
2019/04/06 Python
python实现websocket的客户端压力测试
2019/06/25 Python
python+selenium 简易地疫情信息自动打卡签到功能的实现代码
2020/08/22 Python
Python使用eval函数执行动态标表达式过程详解
2020/10/17 Python
python模块内置属性概念及实例
2021/02/18 Python
阿迪达斯希腊官方网上商店:adidas希腊
2019/04/06 全球购物
《三顾茅庐》教学反思
2014/04/10 职场文书
职务任命书范本
2014/06/05 职场文书
网聊搭讪开场白
2015/05/28 职场文书
新年祝酒词大全
2015/08/11 职场文书
初中语文教学研修日志
2015/11/13 职场文书
三年级作文之小小梦想
2019/12/06 职场文书
python字符串拼接.join()和拆分.split()详解
2021/11/23 Python