【问题标题】:Error while renaming files with os.rename() in Python在 Python 中使用 os.rename() 重命名文件时出错
【发布时间】:2020-08-09 13:16:21
【问题描述】:
import os

for filename in os.listdir("C:/Users/Awesome/Music"):
    if filename.endswith("lyrics.mp3"):
        os.rename(filename,filename[0 : len(filename)-11]+".mp3")

上面的代码返回错误

File "c:/python/lyrics-pop.py", line 6, in <module>
    os.rename(filename,filename[0 : len(filename)-11]+".mp3")
FileNotFoundError: [WinError 2] The system cannot find the file specified: '2 Chainz - Bigger Than You (feat Drake  Quavo) lyrics.mp3' -> '2 Chainz - Bigger Than You (feat Drake  Quavo).mp3'

"""

我已确定没有其他程序正在访问 .mp3 文件并删除了 readonly 属性。这可能是什么原因造成的?

【问题讨论】:

  • 如果你检查文件名,你会发现它没有路径,所以你需要附加文件夹路径和文件名来提取实际文件。使用 os.path.join。
  • 好吧,让我试试,谢谢
  • 你也可以使用glob,它会给你完整的路径。

标签: python windows operating-system


【解决方案1】:

问题可能是您将相对路径传递给 os.rename,将 dir 添加到文件路径,如下所示:

import os
dir = "C:/Users/Awesome/Music"
for filename in os.listdir(dir):
    if filename.endswith("lyrics.mp3"):
        os.rename(os.path.join(dir,filename),os.path.join(dir,filename[0 : len(filename)-11])+".mp3")

【讨论】:

    【解决方案2】:

    这是因为python找不到运行该程序的文件,因为没有给出完整路径。

    你可以这样做:

    import os
    filedir = "C:/Users/Awesome/Music"
    for filename in os.listdir(filedir):
        if filename.endswith("lyrics.mp3"):
            filepath = os.path.join(filedir, filename)
            new_file = os.path.join(filedir, filename[0 : len(filename)-11]+".mp3")
            os.rename(filepath, new_file)
    

    【讨论】:

      【解决方案3】:

      正如 cmets 中所建议的,问题似乎出在文件的相对路径上。
      您可以使用glob,它将为您提供完整路径,即:

      from glob import glob
      from os import rename
      
      for f in glob("C:/Users/Awesome/Music/*lyrics.mp3"):
          rename(f, f[0 : len(f)-11]+".mp3")
      

      【讨论】:

        猜你喜欢
        • 2016-04-26
        • 1970-01-01
        • 2019-01-04
        • 2021-03-25
        • 2018-03-10
        • 2021-09-14
        • 2021-03-31
        • 2019-01-04
        • 1970-01-01
        相关资源
        最近更新 更多