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线程中对join方法的运用的教程
Apr 09 Python
从CentOS安装完成到生成词云python的实例
Dec 01 Python
Python matplotlib画图实例之绘制拥有彩条的图表
Dec 28 Python
基于Python中numpy数组的合并实例讲解
Apr 04 Python
python 每天如何定时启动爬虫任务(实现方法分享)
May 21 Python
Anaconda2 5.2.0安装使用图文教程
Sep 19 Python
Django框架登录加上验证码校验实现验证功能示例
May 23 Python
在python Numpy中求向量和矩阵的范数实例
Aug 26 Python
windows下Pycharm安装opencv的多种方法
Mar 05 Python
pandas DataFrame 数据选取,修改,切片的实现
Apr 24 Python
解决导入django_filters不成功问题No module named 'django_filter'
Jul 15 Python
python基础之匿名函数详解
Apr 21 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
smarty section简介与用法分析
2008/10/03 PHP
一些 PHP 管理系统程序中的后门
2009/08/05 PHP
php中strtotime函数性能分析
2016/11/20 PHP
PHP实现负载均衡session共享redis缓存操作示例
2018/08/22 PHP
多个iframe自动调整大小的问题
2006/09/18 Javascript
JavaScript Object的extend是一个常用的功能
2009/12/02 Javascript
浅析JavaScript中的常用算法与函数
2013/11/21 Javascript
代码触发js事件(click、change)示例应用
2013/12/13 Javascript
基于Arcgis for javascript实现百度地图ABCD marker的效果
2015/09/12 Javascript
基于javascript实现根据身份证号码识别性别和年龄
2016/01/22 Javascript
JS获取随机数和时间转换的简单实例
2016/07/10 Javascript
jQuery获取file控件中图片的宽高与大小
2016/08/04 Javascript
jQuery插件开发发送短信倒计时功能代码
2017/05/09 jQuery
几种响应式文字详解
2017/05/19 Javascript
浅谈Vue的加载顺序探讨
2017/10/25 Javascript
nodejs操作mongodb的增删改查功能实例
2017/11/09 NodeJs
javascript Canvas动态粒子连线
2020/01/01 Javascript
微信小程序 button样式设置为图片的方法
2020/06/19 Javascript
Vue 3自定义指令开发的相关总结
2021/01/29 Vue.js
[02:41]DOTA2英雄基础教程 谜团
2013/12/10 DOTA
python实现用户登录系统
2016/05/21 Python
Python django实现简单的邮件系统发送邮件功能
2017/07/14 Python
使用python将请求的requests headers参数格式化方法
2019/01/02 Python
Pycharm连接gitlab实现过程图解
2020/09/01 Python
Room Mate Hotels美国:西班牙酒店品牌
2018/04/10 全球购物
美国医疗用品、医疗设备和家庭保健用品商店:Medical Supply Depot
2018/07/08 全球购物
企业宣传工作方案
2014/06/02 职场文书
会计专业毕业生求职信
2014/07/04 职场文书
班组长安全工作职责
2014/07/15 职场文书
2014年党的群众路线教育实践活动整改措施(个人版)
2014/09/25 职场文书
2015年端午节活动策划书
2015/05/05 职场文书
解放思想大讨论活动总结
2015/05/09 职场文书
安全生产隐患排查制度
2015/08/05 职场文书
高中政治教师教学反思
2016/02/23 职场文书
文艺有韵味的诗句(生命类、亲情类...)
2019/07/11 职场文书
Window server 2012 R2 AD域的组策略相关设置
2022/04/28 Servers