【问题标题】:Renaming files and folders with the os.walk in Python 3在 Python 3 中使用 os.walk 重命名文件和文件夹
【发布时间】:2019-03-05 01:14:13
【问题描述】:

我正在尝试重命名给定目录中的所有文件和文件夹。我想用连字符替换空格,然后全部重命名为小写。我被下面的代码困住了。当 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 很新,所以这有点超出我的理解!非常感谢。

【问题讨论】:

    标签: python rename os.walk


    【解决方案1】:

    os.rename() 解析相对于当前工作目录的相对文件路径(在 Linux/Mac 中不以 / 开头的路径,在 Windows 中不以驱动器号开头的路径)。

    在将名称传递给os.rename() 之前,您需要先将名称与root 联系起来os.path.join(),否则rename 会在当前工作目录而不是原始文件夹中查找具有该名称的文件。

    应该是这样的:

    os.rename(os.path.join(root, file), os.path.join(root, newFilename))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-09
      • 1970-01-01
      • 2011-12-30
      相关资源
      最近更新 更多