簡體   English   中英

使用Python遞歸重命名文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM