Моя проблема похожа на Python's os.path choking on Hebrew filenamesПереименовать недопустимое имя файла в XP через Python
однако, я не знаю, оригинальную кодировку файла мне нужно переименовать (в отличии от другого поста он знал это был иврит изначально).
Я делал восстановление данных для клиента и копировал файлы на свою машину XP SP3, , а некоторые из имен файлов имеют «?» заменяя/представляя недопустимые символы.
Я пытался использовать Python для файлов os.rename
, так как я знаю, что он поддерживает юникод, однако, когда я говорю python о переименовании файлов, кажется, что он не может передать действительное имя файла обратно в API окон.
т.е .:
>>> os.chdir(r'F:\recovery\My Music')
>>> os.listdir(u'.')
[u'Don?t Be Them.mp3', u'That?s A Soldier.mp3']
>>> blah=os.listdir(u'.')
>>> blah[0]
Don?t Be Them.mp3
>>> os.rename(blah[0],'dont be them.mp3')
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
os.rename(blah[0],'dont be them.mp3')
WindowsError: [Error 123] The filename, directory name, or
volume label syntax is incorrect
Я использую Python 2.6, на Win XP SP3, с тем, что кодирование является стандартным XP поведение для США/английский.
Есть ли способ справиться с этими переименованиями, не зная исходного языка?
Вы говорите, что магнезии из бла [0] именно 'Дон т быть Them.mp3' (без обратных кавычек), и я говорю, вы не сделали? копировать-вставить, но импровизировать. – tzot
Являются ли обе файловые системы NTFS? Может быть, вы копируете локальный том FAT32? Вы локально подключили неисправный диск или скопировали его по сети/CIFS? – tzot