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

Python脚本-批量修改文件名

2017-09-23 14:00 459 查看

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
,ModifiedFilename):
print ...
os.rename(path+'\\'+filename
,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
,oldname,newname)
print filenames

print ModifiedFilename
if  cmp(filenames
,ModifiedFilename):
print "from file... "+path+"\\"+filenames
+" to... "+ModifiedFilename
os.rename(path+'\\'+filenames
,path+'\\'+ModifiedFilename)
if MyFindcxxh(filenames
)==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
+' 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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: