我有一个大型目录结构,每个目录包含多个子目录,多个.mbox文件或两者。我需要将所有.mbox文件重命名为相应的文件名而不使用扩展名,例如 bar.mbox - >酒吧 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
答案 0 :(得分:0)
这是通过添加额外的条件语句来测试的,以测试文件的名称是否要更改为当前目录。
如果这是真的,那么将要添加下划线的文件名。
感谢WKPlus对此的暗示。
BCvery1