Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 12, 2013 11:22:32

antrop
Зарегистрирован: 2013-05-23
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 3 - Как записать в архив файлы с русскими именами??

Помогите пожалуйста разобраться, не могу записать в zip архив файлы с русскими именами, точнее эти файлы отображаются крокозябрами((

Использую питон 3 - Пишу так:

from zipfile import ZipFile
z = ZipFile('D:/test.zip', 'a')  #создаю архив 
z.write('d:/русский_текст.txt','русский_текст.txt')  #записываю файл с русским названием в архив
z.close()

Решил попробовать залить в кодировку CP866(вроде как она используется в архивах)
Во втором питоне вроде так работало
z.write('d:/русский_текст.txt','русский_текст.txt'.encode('cp866'))
Получаю ошибку - TypeError: Type str doesn't support the buffer API

Помогите разобраться!!((

Офлайн

#2 Июнь 12, 2013 11:59:05

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Python 3 - Как записать в архив файлы с русскими именами??

Что говорит locale.getlocale()? Какая кодировка у исходников?

Офлайн

#3 Июнь 12, 2013 12:00:09

gamoff
Зарегистрирован: 2013-06-12
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 3 - Как записать в архив файлы с русскими именами??

Не дури ты людям галавы все в slackware нормально работает)))

Офлайн

#4 Июнь 12, 2013 12:03:07

antrop
Зарегистрирован: 2013-05-23
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 3 - Как записать в архив файлы с русскими именами??

Shaman
locale.getlocale()

locale.getlocale()
('Russian_Russia', ‘1251’)

Офлайн

#5 Июнь 12, 2013 12:10:31

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Python 3 - Как записать в архив файлы с русскими именами??

gamoff
в slackware нормально работает)))
и в винде всё работает на ура

Офлайн

#6 Июнь 12, 2013 12:14:24

antrop
Зарегистрирован: 2013-05-23
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 3 - Как записать в архив файлы с русскими именами??

Shaman
и в винде всё работает на ура

не в любой винде(( у меня есть доказательство

Прикреплённый файлы:
attachment asd.jpg (58,6 KБ)

Офлайн

#7 Июнь 12, 2013 14:02:16

antrop
Зарегистрирован: 2013-05-23
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 3 - Как записать в архив файлы с русскими именами??

Товарищи питонисты ! Неужто никто не знает.(((

Офлайн

#8 Июнь 12, 2013 14:47:46

gamoff
Зарегистрирован: 2013-06-12
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 3 - Как записать в архив файлы с русскими именами??

Shaman
gamoff
в slackware нормально работает)))
и в винде всё работает на ура

в чем вопрос, скрипт реально работает!

Офлайн

#9 Июнь 12, 2013 16:10:39

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Python 3 - Как записать в архив файлы с русскими именами??

antrop
у меня есть доказательство
Вот эти вот “Т” через символ мне что-то напоминают. Что-то такое: СЂСѓСЃСЃРєРёР№_текст.txt. Что говорят другие архиваторы? Какая Windows? 95, или целая ME?

Отредактировано Shaman (Июнь 12, 2013 16:17:11)

Офлайн

#10 Июнь 13, 2013 11:06:44

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Python 3 - Как записать в архив файлы с русскими именами??

Не надо так делать. Постоянно натыкаюсь на архивы с именами файлов в кракозябрах. zip нигде не хранит данных об используемой кодировке, и если на целевой машине она отличается от исходной, то пипал хевает траблы :( По умолчанию zip использует кодировку IBM437, в ней, понятно, кириллицей не пахнет, так что лучше пишите имена в транслите.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version