我正在尝试重命名给定目录中的所有文件和文件夹。我想用连字符替换空格,然后将所有重命名为小写。我坚持下面的代码。当os.rename被注释掉时,打印功能将按预期返回所有文件,但是当我取消注释os.rename时,我收到一条错误消息,指出找不到XYZ-> x-y-z文件。
import os
folder = r"C:\Users\Tim\Documents\storage"
space = " "
hyphen = "-"
for root, dirs, files in os.walk(folder):
for file in files:
if space in file:
newFilename = filename.replace(space, hyphen).lower()
os.rename(file, newFilename)
print(newFilename)
很奇怪,这仅用于文件,但是我也想将相同的逻辑应用于文件夹。任何帮助将不胜感激。 Python非常新,所以这超出了我!非常感谢。
答案 0 :(得分:0)
os.rename()
解析相对于当前工作目录的相对文件路径(在Linux / Mac中不是以/
开头的路径,在Windows中不是以驱动器号开头的路径)。
您需要先将os.path.join()
的名称root
传递给os.rename()
,否则重命名将在当前工作目录中而不是在目录中查找具有该名称的文件。原始文件夹。
应该是:
os.rename(os.path.join(root, file), os.path.join(root, newFilename))