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

时间:2012-11-24 10:15:02

标签: 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:])

我需要基本上将冒号-21.mp3等所有文件转换为21.mp3。

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

1 个答案:

答案 0 :(得分:4)

问题就在这里:

os.rename(filename, filename[7:])

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

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

os.rename(filename, filename.split('-')[1])