2

我有一堆 mp3 文件,不知何故在第 0 个索引中有一个特殊字符。所以文件名看起来像这样 - ▶ Alone Tonight - Radio Edit - Above & Beyond .mp3

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

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

我要做的就是用定义的子字符串重命名这个文件[2:len(filename)]

但是,当我这样做时:

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

我明白了

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

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

4

1 回答 1

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关于该主题的博文)。

于 2013-05-12T19:35:20.613 回答