Python - Unable to rename a file with special characters in the file name

。_饼干妹妹 提交于 2019-12-10 10:34:34

问题


I have a bunch of mp3 files that somehow have a special character in the 0th index. So the file name looks like this - ▶ Alone Tonight - Radio Edit - Above & Beyond .mp3

I want to be able to fix this. In python, when I list the file, it shows up like this:

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

All I want to do is to rename this file with the substring defined by [2:len(filename)]

However, when I do this:

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

I get

WindowsError: [Error 123] The filename, directory name, or volume label syntax is incorrect

So what are my options? It looks like windows wont' recognize the special character. I am able to manually edit it, but not programmatically.


回答1:


You may have better luck using the unicode name for the file. To obtain the unicode name, pass a unicode path to os.listdir.

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

Note that using unicode may not always be quite enough to specify the filename (you may have to normalize the unicode), since more than one unicode code point sequence can have the same appearance and meaning. (See unicode equivalence, and Ned Batchelder's blog post on the subject).



来源:https://stackoverflow.com/questions/16510562/python-unable-to-rename-a-file-with-special-characters-in-the-file-name

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!