Skip to main content
 首页 » 编程设计

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

2025年05月04日7dflying

我有一堆 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: [Error 123] The filename, directory name, or volume label syntax is incorrect

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

请您参考如下方法:

使用文件的 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)。