简体   繁体   中英

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

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 ).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM