![](/img/trans.png)
[英]Renaming files recursively to make the filename a concatenation of their path
[英]Renaming files recursively with Python
我有一個很大的目錄結構,每個目錄包含多個子目錄,多個.mbox文件或兩者。 我需要將所有.mbox文件重命名為不帶擴展名的相應文件名,例如bar.mbox-> bar foo.mbox-> foo
這是我編寫的腳本:
# !/usr/bin/python
import os, sys
def walktree(top, callback):
for path, dirs, files in os.walk(top):
for filename in files:
fullPath = os.path.join(path, filename)
callback(fullPath)
def renameFile(file):
if file.endswith('.mbox'):
fileName, fileExt = os.path.splitext(file)
print file, "->", fileName
os.rename(file,fileName)
if __name__ == '__main__':
walktree(sys.argv[1], renameFile)
當我使用以下命令運行此命令時:
python walktrough.py "directory"
我得到錯誤:
Traceback (most recent call last):
File "./walkthrough.py", line 18, in <module>
walktree(sys.argv[1], renameFile)
File "./walkthrough.py", line 9, in walktree
callback(fullPath)
File "./walkthrough.py", line 15, in renameFile
os.rename(file,fileName)
OSError: [Errno 21] Is a directory
通過添加額外的條件語句來測試該文件是否要更改為當前目錄,即可解決此問題。
如果為真,則在文件名中添加了下划線。
感謝WKPlus對此的提示。
BCvery1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.