在Python中使用os.rename()重命名文件时出错

2024-06-16 08:55:48 发布

您现在位置:Python中文网/ 问答频道 /正文

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属性。这是什么原因造成的


Tags: inimportyoulenosfilenamemp3drake
3条回答

如评论中所述,问题似乎在于文件的相对路径。
您可以使用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")

问题可能是您正在将相对路径传递给os。重命名,将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")

这是因为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)

相关问题 更多 >