您的位置:首页 > 编程语言 > Python开发

批量替换文件夹名称或文件名称中特定字符

2016-07-10 17:03 441 查看
最近由于要测试一个小程序时需要比较两个文件夹的差异,而且两个文件夹中的文件夹及文件名称仅在相同位置处相差几个字符,如果将一个文件夹中的某些字符替换为另一个文件夹相同位置处的字符后则两个文件夹中的内容完全相同,因此写了下面的一个小程序进行批量处理
#!/usr/bin/env python
# encoding:utf-8

import os
import sys
import pdb
import getopt

def rename(paths,source,dest):
for p in os.listdir(paths):
str = os.path.join(paths,p)
if(os.path.isdir(str)):
rename(str,source,dest)
if(p.find(source) != -1 and editPath):
os.rename(os.path.join(paths,p),os.path.join(paths,p.replace(source,dest)))
else:
if(p.find(source) != -1 and editFile):
os.rename(os.path.join(paths,p),os.path.join(paths,p.replace(source,dest)))
def usage():
print "description:replace string in path or filename with other string recursive"
print "-t 目标文件夹"
print "-s 将要被替换的字符串"
print "-d 用来替换的字符串"
print "-p 替换文件夹名称"
print "-f 替换文件名称"
print "-h 显示帮助信息"

#读取命令行参数
_DEBUG=False
opts,args = getopt.getopt(sys.argv[1:],"hpft:s:d:")
path = ""
source = ""
dest = ""
editPath = False
editFile = False
if(_DEBUG == True):
pdb.set_trace()
for op,value in opts:
if(op == "-t"):#获取目标文件夹
path = value
elif(op == "-s"):#获取要替换的字符串
source = value
elif(op == "-d"):#获取被替换的字符串
dest = value
elif(op == "-p"):#获取是否替换文件夹名称的标志
editPath = True
elif(op == "-f"):#获取是否替换文件名称的标志
editFile = True
elif(op == "-h"):#打印帮助信息
usage()
sys.exit()

if(source == "" or dest == "" or path == ""):
usage()
sys.exit()

rename(path,source,dest)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python