Python脚本-批量修改文件名

Notice1:os.listdir(path)

filenames = os.listdir(path)
os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。这个列表以字母顺序。 它不包括 '.' 和'..' 即使它在文件夹中。只支持在 Unix, Windows 下使用。
参数:path需要列出的目录路径
返回值:返回指定路径下的文件和文件夹列表。

Notice2:re.compile 

p = re.compile(OldPartString)
return p.sub(NewPartString,FullString)
正则表达式是一个特殊的字符序列,它能帮助我们方便的检查一个字符串是否与某种模式匹配。re 模块使 Python 语言拥有全部的正则表达式功能。compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。
re.compile(pattern, flags=0)编译正则表达式,返回RegexObject对象,然后可以通过RegexObject对象调用sub()方法。
re.sub(pattern, repl, string, count=0, flags=0)找到 RE 匹配的所有子串,并将其用一个不同的字符串替换。可选参数 count 是模式匹配後替换的最大次数;count 必须是非负整数。缺省值是 0 表示替换所有的匹配。如果无匹配,字符串将会无改变地返回。
相当于一个字符串中进行模式替换。

Notice3:cmp函数 os.rename

if  cmp(filenames[n],ModifiedFilename):
    print ...
    os.rename(path+'\\'+filename[n],path+'\\'+ModifiedFilename)
cmp(x,y) 函数用于比较2个对象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。
os.rename(src, dst);src -- 要修改的目录名;dst -- 修改后的目录名;该方法没有返回值

Notice4:str.find()

str.find(str1, beg=0, end=len(string))
str -- 指定检索的字符串
beg -- 开始索引,默认为0。
end -- 结束索引,默认为字符串的长度。
find() 方法检测字符串中是否包含子字符串 str 1,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1。
NewNameInFile = re.sub(oldname,newname,OldNameInFile)

os.remove() ; open(file,'wb')
os.remove() 方法用于删除指定路径的文件。如果指定的路径是一个目录,将抛出OSError。在Unix, Windows中有效;
os.remove(path+'\\'+ModifiedFilename)
f_w = open(path+'\\'+ModifiedFilename,'wb')
f_w.write(NewNameInFile)
f_w.close

Notice5:os.getcwd()

os.getcwd() 方法用于返回当前工作目录。

Notice6:Upper()

upper() 方法将字符串中的小写字母转为大写字母。

#!usr/bin/python
import os, sys, re
oldname="SZH"
newname="LLSH"
def  MyReplace(FullString,OldPartString,NewPartString):
    p=re.compile (OldPartString)
    return p.sub(NewPartString,FullString)

def MyFindcxxh(str):
    if str.find('.cxx')==-1 and  str.find('.h')==-1 and str.find('.txt')==-1 and str.find('.ui')==-1  and str.find('.qrc')==-1:
        return -1
    else:
        return 1 

def MyChangeName(path,oldname,newname):
    filenames=os.listdir(path)
    for n in xrange(len(filenames)):
        ModifiedFilename=MyReplace(filenames[n],oldname,newname)
        print filenames[n]
        print ModifiedFilename
        if  cmp(filenames[n],ModifiedFilename):
            print "from file... "+path+"\\"+filenames[n]+" to... "+ModifiedFilename
            os.rename(path+'\\'+filenames[n],path+'\\'+ModifiedFilename)  
        if MyFindcxxh(filenames[n])==1 :
            print 'have found cxx/h/txt...'
            OldNameInFile=open(path+'\\'+ModifiedFilename,'r').read()
            if OldNameInFile.find(oldname)>-1:
                print 'need replacing...'
                NewNameInFile = re.sub(oldname,newname,OldNameInFile)
                print "modifying the file of ..."+path+"\\"+filenames[n]+' contest...'+oldname+' is replaced by '+newname
                os.remove(path+'\\'+ModifiedFilename)
                f_w=open(path+'\\'+ModifiedFilename,'wb')
                f_w.write(NewNameInFile)
                f_w.close()

        npath=path+"\\"+ModifiedFilename
        if os.path.isdir(npath):
           MyChangeName(npath,oldname,newname)

path=os.getcwd()
MyChangeName(path,oldname,newname)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值