Форум сайта python.su
В общем суть проблемы ясна из темы.Мне никак не удается распаковать файлы из .zip архива на русском.Я пишу код на питоне 2.7 и на одном форуме мне помогли кинули вот такой код на Python 3.X:
with zipfile.ZipFile(zfile, 'r') as zip: for name in zip.namelist(): print(name) unicode_name = name.encode('cp437').decode('cp866') print(unicode_name) # декодированное имя используем для сохранения файла # не декодированное имя - для чтения в архиве with zip.open(name) as f: content = f.read() fullpath = os.path.join(os.getcwd() ,unicode_name) with open(fullpath,'wb') as f: f.write(content)
from zipfile import ZipFile import os with ZipFile('ezhegodnik-2016.zip', 'r') as zip: for name in zip.namelist(): print name unicode_name = name.decode('cp866') print unicode_name with zip.open(name) as f: content = f.read() fullpath = os.path.join(os.getcwd() ,unicode_name) with open(fullpath,'w') as f: f.write(content)
IOError: invalid mode ('w') or filename: u'E:\\Learning\\programming\\Python\\Parsing\\\u0415\u0436\u0435\u0433\u043e\u0434\u043d\u0438\u043a 2016/'
Офлайн
У вас в имени прямой слеш в конце, что есть нехорошо. Сие не проблема русских имен или питона 2.7 а непонимания что дает namelist
Отредактировано doza_and (Апрель 15, 2017 18:28:49)
Офлайн
doza_andZipFile.namelist()
У вас в имени прямой слеш в конце, что есть нехорошо. Сие не проблема русских имен или питона 2.7 а непонимания что дает namelist
Отредактировано Motan (Апрель 15, 2017 18:44:34)
Офлайн
MotanНеправильно понимаете. archive members это не только файлы. И к питону эта проблема не имеет никакого отношения. https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT
с именами файлов в архиве
MotanПостановка задачи неясна. Вы программой архиватором не пробовали пользоваться?
Мне никак не удается распаковать файлы из .zip архива на русском
Отредактировано doza_and (Апрель 15, 2017 19:35:43)
Офлайн
Задача простая, у меня есть .zip архив , мне надо по средствам питона извлечь этот архив.Первая ссылка в гугле была на библиотеку ‘zipfile’ я скопипастил код извлечение,все прошло успешно,но на выходе я получил нечитабельные символы вместо названия файлов и директории,поискал по интернету что и зачем нашел код и опять незадача,после того как Вы сказали что дело в слеше в конце я replace'ом заменил его на пробел но все равно не могу извлечь именно директорию с файлами
Офлайн