import os
for filename in os.listdir("."):
if not filename.startswith("renamefilesindir"):
for filename2 in os.listdir(filename):
if filename2.startswith("abcdefghij"):
newName = "[abcdefghij.com][abcde fghij][" + filename + "][" + filename2[11:16] + "].jpg"
print(filename2)
print(newName)
os.rename(filename2, newName)
我有一个文件夹,里面有几百个其他文件夹。每个辅助文件夹中都有许多类似名称的文件。我想要做的是重命名每个文件,但每当我运行上述程序时,我都会收到以下错误。
abcdefghij_88741-lg.jpg
[abcdefghij.com][abcde fghij][3750][88741].jpg
Traceback (most recent call last):
File "C:\directory\renamefilesindir.py", line 9, in <module>
os.rename(filename2, newName)
FileNotFoundError: [WinError 2] The system cannot find the file specified: 'abcdefghij_88741-lg.jpg' -> '[abcdefghij.com][abcde fghij][3750][88741].jpg'
我不知道这意味着什么。它打印现有的文件名,所以我知道它找到了要更改的文件。我是否错误地重命名了文件?什么不能找到?
答案 0 :(得分:1)
os.listdir
仅包含文件的名称,而不包含完整路径。这就是为什么你的程序实际上试图重命名当前目录中的文件而失败的原因。所以你可以做到以下几点:
import os.path
os.rename(os.path.join(filename, filename2), os.path.join(filename, newName))
因为名为filename2
的文件位于名为filename
的目录中。