Python脚本-批量修改文件名
生活随笔
收集整理的這篇文章主要介紹了
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 -1else: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 ModifiedFilenameif cmp(filenames[n],ModifiedFilename):print "from file... "+path+"\\"+filenames[n]+" to... "+ModifiedFilenameos.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 '+newnameos.remove(path+'\\'+ModifiedFilename)f_w=open(path+'\\'+ModifiedFilename,'wb')f_w.write(NewNameInFile)f_w.close()npath=path+"\\"+ModifiedFilenameif os.path.isdir(npath):MyChangeName(npath,oldname,newname)path=os.getcwd() MyChangeName(path,oldname,newname)
總結
以上是生活随笔為你收集整理的Python脚本-批量修改文件名的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [CB]加快BCB编译速度
- 下一篇: 程序员如何买股票