Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 15, 2017 18:11:18

Motan
Зарегистрирован: 2017-04-15
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Распаковка Zip файла с русскими названиями

В общем суть проблемы ясна из темы.Мне никак не удается распаковать файлы из .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 Апрель 15, 2017 18:28:19

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Распаковка Zip файла с русскими названиями

У вас в имени прямой слеш в конце, что есть нехорошо. Сие не проблема русских имен или питона 2.7 а непонимания что дает namelist



Отредактировано doza_and (Апрель 15, 2017 18:28:49)

Офлайн

#3 Апрель 15, 2017 18:41:53

Motan
Зарегистрирован: 2017-04-15
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Распаковка Zip файла с русскими названиями

doza_and
У вас в имени прямой слеш в конце, что есть нехорошо. Сие не проблема русских имен или питона 2.7 а непонимания что дает namelist
ZipFile.namelist()
Return a list of archive members by name.
как я понимаю она возвращает переменную типа list с именами файлов в архиве.Я ещё могу добавить я вообще мало что понимаю из питона, но сдавать курсач как-то надо

Отредактировано Motan (Апрель 15, 2017 18:44:34)

Офлайн

#4 Апрель 15, 2017 19:31:09

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Распаковка Zip файла с русскими названиями

Motan
с именами файлов в архиве
Неправильно понимаете. archive members это не только файлы. И к питону эта проблема не имеет никакого отношения. https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT

Motan
Мне никак не удается распаковать файлы из .zip архива на русском
Постановка задачи неясна. Вы программой архиватором не пробовали пользоваться?



Отредактировано doza_and (Апрель 15, 2017 19:35:43)

Офлайн

#5 Апрель 15, 2017 20:50:49

Motan
Зарегистрирован: 2017-04-15
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Распаковка Zip файла с русскими названиями

Задача простая, у меня есть .zip архив , мне надо по средствам питона извлечь этот архив.Первая ссылка в гугле была на библиотеку ‘zipfile’ я скопипастил код извлечение,все прошло успешно,но на выходе я получил нечитабельные символы вместо названия файлов и директории,поискал по интернету что и зачем нашел код и опять незадача,после того как Вы сказали что дело в слеше в конце я replace'ом заменил его на пробел но все равно не могу извлечь именно директорию с файлами

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version