Python - 无法重命名文件名中包含特殊字符的文件

时间:2013-05-12 18:12:55

标签: python file character rename

我有一堆mp3文件,它们在第0个索引中有某种特殊字符。所以文件名看起来像这样 - ▶Alone Tonight - Radio Edit - Above&超越.mp3

我希望能够解决这个问题。在python中,当我列出文件时,它显示如下:

'? Alone Tonight - Radio Edit - Above & Beyond .mp3'

我想要做的就是使用[2:len(filename)]

定义的子字符串重命名此文件

然而,当我这样做时:

newfilename = filename[2:len(filename)]
os.rename(filename,newfilename)

我得到了

  

WindowsError:[错误123]文件名,目录名或卷   标签语法不正确

那么我的选择是什么?看起来窗户不会'识别特殊角色。我可以手动编辑它,但不能以编程方式编辑。

1 个答案:

答案 0 :(得分:1)

使用文件的unicode名称可能会更好。 要获取unicode名称,请将unicode路径传递给os.listdir

for filename in os.listdir(u'/path/to/files'):
    if filename.startswith(u'\u25b6'):
        os.rename(filename, filename[2:])

请注意,使用unicode可能并不总是足以指定文件名(您可能必须规范化unicode),因为多个unicode代码点序列可以具有相同的外观和含义。 (见unicode equivalence和Ned Batchelder的blog post on the subject)。

相关问题