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

最近由于要测试一个小程序时需要比较两个文件夹的差异,而且两个文件夹中的文件夹及文件名称仅在相同位置处相差几个字符,如果将一个文件夹中的某些字符替换为另一个文件夹相同位置处的字符后则两个文件夹中的内容完全相同,因此写了下面的一个小程序进行批量处理
#!/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)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值