Я пытаюсь создать небольшой скрипт, который копирует файлы с частично юникодными именами в переменных, но я просто не могу заставить его работать.Python Скопировать файл с unicode filename
код выглядит следующим образом:
fileextension = filename.split(".")[len(filename.split(".")) - 1]
if not os.path.exists(artistdir + "\\" + songname + "." + fileextension):
print basedir + filename, artistdir + "\\" + songname + "." + fileextension
shutil.copy(basedir + filename, artistdir + "\\" + songname + "." + fileextension)
я получаю следующее возвращение:
E:\music\_collections\Adrian von Ziegler\2012 Starchaser\01. Adrian von Ziegler - Nidh├Âggr.mp3 C:\Temp\Adrian von Ziegler\Nidh├Âggr.mp3
Traceback (most recent call last):
File "E:\main\Coding\Python\WinampPlaylistExport\winampplaylistexport.py", line 72, in <module>
iteratePlaylists()
File "E:\main\Coding\Python\WinampPlaylistExport\winampplaylistexport.py", line 20, in iteratePlaylists
iteratePlaylist(playlist.get("title"), playlist.get("filename"))
File "E:\main\Coding\Python\WinampPlaylistExport\winampplaylistexport.py", line 69, in iteratePlaylist
shutil.copy(basedir + filename, artistdir + "\\" + songname + "." + fileextension)
File "C:\Python27\lib\shutil.py", line 119, in copy
copyfile(src, dst)
File "C:\Python27\lib\shutil.py", line 82, in copyfile
with open(src, 'rb') as fsrc:
IOError: [Errno 2] No such file or directory: 'E:\\music\\_collections\\Adrian von Ziegler\\2012 Starchaser\\01. Adrian von Ziegler - Nidh\xc3\xb6ggr.mp3'
Первая строка показывает цель и исходный путь к файлу, где копирование не удается (возвращение заявление печати).
Заранее спасибо.
Возможный дубликат: http://stackoverflow.com/questions/4173477/copying-files-with-unicode-names? – amito
Я уже пробовал много ответов, таких как использование .encode ("utf-8") и добавление u "" + к строкам пути, но это породило следующую ошибку: UnicodeDecodeError: кодек ascii не может декодировать байт 0xc3 в позиция 84: порядковый номер не в диапазоне (128) –
Еще 2 предложения: если возможно, укажите свои переменные как объекты «unicode» (последовательность символов), а не «строка» (последовательность байтов). Тогда конкатенация будет работать. И обычным способом конкатенирования компонентов пути является использование 'os.path.join (...)'. – roeland