Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > Заархивировать папку с нужной кодировкой


Автор: polin11 12.11.2019, 19:57
Создаю архив в Windows
  os.system("C:\Program Files\7-Zip\7z.exe" a FILE.zip D:\data*)
при извлечении файлов из архива, имена файлов корректно отображаются
(предположительно кодировка utf-8).

Решил использовать zip.ZipFile() или shutil.make_archive()
при попытке получить имена файлов из архива, они в непонятной кодировке.
Вопрос:  можно ли при формировании архива через zip.ZipFile() или shutil.make_archive()
указать кодировку имен файлов в архиве?

Автор: kapbepucm 22.11.2019, 12:52
а что у вас показывает этот код?
Код
from sys import getfilesystemencoding
print(getfilesystemencoding())
Сделаю предположение, что shutil.make_archive() какие имена видит в каталоге, так и пишет байт в байт, несмотря на кодировки.

Цитата(polin11 @  12.11.2019,  19:57 Найти цитируемый пост)
os.system("C:\Program Files\7-Zip\7z.exe" a FILE.zip D:\data*)
Вообще 7z.exe хорош тем, в отличии от невменяемых других, что при упаковке автоматически перекодирует все имена файлов в UTF-8, какая бы системная локаль не стояла.

Цитата(polin11 @  12.11.2019,  19:57 Найти цитируемый пост)
при попытке получить имена файлов из архива
Чем имена файлов читаем?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)