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.
解决方案
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).