我有一堆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]文件名,目录名或卷 标签语法不正确
那么我的选择是什么?看起来窗户不会'识别特殊角色。我可以手动编辑它,但不能以编程方式编辑。
答案 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)。