python os.rename“”在该文件已经存在时无法创建该文件

gra*_*aci 1 python error-handling operating-system rename

K ..我只是使用在这里找到的简单脚本:

import os
from os import rename, listdir

print os.listdir(".")
for filename in os.listdir("."):
    if filename.startswith("colon-"):
        print filename
        os.rename(filename, filename[7:])
Run Code Online (Sandbox Code Playgroud)

我基本上需要将所有像Colon-21.mp3这样的文件转换为21.mp3。

但是我得到一个错误,CANNOT CREATE A FILE WHEN THAT FILE ALREADY EXISTS. 如何解决这个问题?我正在使用Windows 7。

Ale*_*lex 5

问题就在这里:

os.rename(filename, filename[7:])
Run Code Online (Sandbox Code Playgroud)

Python索引从0开始,并且字符串"colon-"只有6个字符长,因此使用您的代码,冒号21.mp3将变为1.mp3。更改该行以filename[6:]代替使用,您的问题应该消失了。

也就是说,像您一样使用硬编码的字符串长度并不是一个好主意。正是由于我们在这里发现的原因才容易出错(像这样的硬编码数字通常称为“魔术数字”,因为很难说出为什么将它们设置为给定长度)。一个更好的选择是:

os.rename(filename, filename.split('-')[1])
Run Code Online (Sandbox Code Playgroud)