Я пытаюсь добавить несколько файлов в zip с помощью библиотеки zipfile от Python. Проблема заключается в имени файла, который является zipped, который содержит специальные символы (utf-8).python zipfile encoding for arcname
Вот основной код:
#!/usr/bin/env python
import zipfile
infilename = "test_file"
outfilename = "test.zip"
filename = u'Conf\xe9d\xe9ration.txt'
if __name__ == '__main__':
f = open(outfilename, "w")
archive = zipfile.ZipFile(f, "w", zipfile.ZIP_DEFLATED)
archive.write(infilename, filename.encode("CP437"))
archive.close()
f.close()
Файл генерируется не правильно читается с каждым почтовым экстрактор:
Ubuntu 10,04 & 11,10: Conf d ration.txt
? Файл не может быть извлечен: «Предупреждение: имя файла не соответствует: Conf \? D \? Ration.txt»Wi ndows XP & 7: Confédération.txt
Файл может быть прочитанMacOSX (Лев): ConfÇdÇration.txt
Файл может быть прочитан
Я попытался без кодирования для CP437 изменения только одну строку чтобы:
archive.write(infilename, filename)
на этот раз Ubuntu имеет еще такую же проблему, Windows дает "Conf + ®d + ®ration.txt" и MacOSX работает отлично.
Кто-то знает (pythonic) решение с поперечной пластинкой?
Спасибо!