我有一個音樂目錄,其中包含專輯文件夾以及每個級別上的單個歌曲。我如何遍歷所有這些文件也是以不同格式(mp3,wav等)編碼的?另外有沒有一種方法可以將它們重命名爲一種更符合我喜歡的正則表達式的格式?如何遍歷文件並在Python中重命名它們
感謝
我有一個音樂目錄,其中包含專輯文件夾以及每個級別上的單個歌曲。我如何遍歷所有這些文件也是以不同格式(mp3,wav等)編碼的?另外有沒有一種方法可以將它們重命名爲一種更符合我喜歡的正則表達式的格式?如何遍歷文件並在Python中重命名它們
感謝
os.walk
的文件去了在目錄及其子目錄,遞歸os.rename
重新命名他們文件的編碼這裏不支付任何作用,我認爲。當然,你可以檢測它們的擴展名(使用os.path.splitext
),然後根據它做一些事情,但只要你只需要重命名文件(即操縱它們的名字),內容就不重要。
我在我寫的程序中使用這段代碼。我用它來獲取圖像文件的遞歸列表,其調用模式類似於re.compile(r'\.(bmp|jpg|png)$', re.IGNORECASE)
。我想你應該已經明白了。
def getFiles(dirname, suffixPattern=None):
dirname=os.path.normpath(dirname)
retDirs, retFiles=[], []
for root, dirs, files in os.walk(dirname):
for i in dirs:
retDirs.append(os.path.join(root, i))
for i in files:
if suffixPattern is None or \
suffixPattern.search(i) is not None:
retFiles.append((root, i))
return (retDirs, retFiles)
有了這個列表之後,應用重命名規則會很容易。 os.rename
是你的朋友,請參閱http://docs.python.org/library/os.html。
我通常會收錢來編寫類似的東西。這裏有一些和我在Perl中寫的東西類似,你至少可以看到大概的想法:https://github.com/eberle1080/oggsync –
@Chris:ouch,300行Perl遍歷和重命名文件? –
不,300行要從一種格式轉碼到另一種格式。這不是OP之後的事情嗎? –