문제 설명
Python ‑ 파일 이름에 특수 문자가 있는 파일의 이름을 바꿀 수 없습니다. (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.
참조 솔루션
방법 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).
(by trycatch22、unutbu)