python——复制目录结构小脚本
引言
有个需要,需要把某个目录下的目录结构进行复制,不要文件,当目录结构很少的时候可以手工去建立,当目录结构复杂,目录层次很深,目录很多的时候,这个时候要是还是手动去建立的话,实在不是一种好的方法,弄不好会死人的。写一个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
参考文章
http://www.cnblogs.com/xuxm2007/archive/2010/08/04/1792463.html(了解python中的__name__)
http://www.blogjava.net/nkjava/archive/2009/06/10/281064.html(dos文件格式修改为unix文件格式)
python——复制目录结构小脚本的更多相关文章
- 初学Python——软件目录结构规范
为什么要设计好目录结构? 可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等.从而非常快速的了解这个项目. 可维护性高: 定义好组织 ...
- python 项目目录结构
目录组织方式 关于如何组织一个较好的Python工程目录结构,已经有一些得到了共识的目录结构.在Stackoverflow的这个问题上,能看到大家对Python目录结构的讨论. 这里面说的已经很好了, ...
- Python软件目录结构
目录组织方式 关于如何组织一个较好的Python工程目录结构,已经有一些得到了共识的目录结构.在Stackoverflow的这个问题上,能看到大家对Python目录结构的讨论. 这里面说的已经很好了, ...
- Python之目录结构
Python之目录结构 项目名project_name project_name -|--bin (可执行文件) --|--start.py import os,sys #设置环境变量 BASE_DI ...
- [Python]切换工作目录|python将目录切换为脚本所在目录
Python使用os.chdir命令切换python工作目录 代码示例: In []: import os In []: os.system("pwd") /home/wangju ...
- python开发目录合并小工具 PathMerge
前言 这个程序陆陆续续开发了几天,正好我在学Python,就一边做一边学,倒是学到不少东西. 不得不说python是快速开发的好工具. 程序做了一些改进,这两天又忙着毕设,现在才想起来发到博客上.想想 ...
- Python软件目录结构规范
设计项目目录结构和'代码编码风格'一样, 是为了达到以下两点: 可读性高 可维护性高 目录组织方式 Stackoverflow上有一些比较好的范式.
- Python发邮件的小脚本
# -*- coding: UTF-8 -*- import smtplib from email.mime.text import MIMEText mailto_list = ['hitwh_Gy ...
- python将目录切换为脚本所在目录
os.chdir(os.path.abspath(os.path.dirname(sys.argv[0])))
随机推荐
- KMS10流氓软件
win10想激活,结果中了流氓软件的当... (关键是win10家庭单语言版居然还激活不了....白吃亏了) 把我的chrome 和 firefox 主页改成hao.qquu8.com,该网址重定向到 ...
- ASP.NET 系列:单元测试之Log4Net
使用Log组件时,我们通常自定义ILogger接口,使用Log4Net等组件进行适配来定义不同的实现类.使用Log4Net日志组件时,为了即方便单元测试又能使用配置文件,我们通过Log4Net的ILo ...
- nios II--实验2——led软件部分
软件开发 首先,在硬件工程文件夹里面新建一个software的文件夹用于放置软件部分:打开toolsàNios II 11.0 Software Build Tools for Eclipse,需要进 ...
- 3-cd 命令总结
- Nginx之负载均衡服务器揭秘
Nginx代理服务器, 一次性代理多台后端机器, 利用负载算法, 决定将当前请求传递给某台服务器执行. 有哪些后台服务器?例如微软的IIS,Apache,Nginx 负载算法是什么? 加权轮询. ng ...
- iOS开发,应用间的跳转
预习:URL由两部分组成-- 1.scheme:协议头(http:// ftp:// 等等) 2.path:路径(URL中path可以没有) 一.简单实现跳转到指定APP(也就是说跳转到的APP必须 ...
- 【POJ 2774】Long Long Message 最长公共子串
还是模板啊,手残&&打成||查错查了1h+TAT #include<cstdio> #include<cstring> #include<algorith ...
- 关于php插件pdo_mysql的安装
今天在做一个商城的连接的时候,需要MpDO验证.需要安装pdo_mysql模块,刚开始按照php扩展模块的安装按照这个安装ZIP,curl都成功了但是安装pdo_mysql却不行,在./configu ...
- ES6新特性:Javascript中Generator(生成器)
ES6的很多特性都跟Generator扯上关系,而且实际用处比较广, 包含了任何需要异步的模块, 比如ajax, filesystem, 或者数组对象遍历等都可以用到: Generator的使用: G ...
- java-首字母大小写
/** * 首字母小写 * * @param str * @return */ public static String toLowerCaseFirstChar(String s) { if (Ch ...