
Nobue
12.08.2016
12:33:15
ну вот мне и интересно кто же на практике его использует и для чего

Alexey
12.08.2016
12:33:23
Подскажите, пожалуйста, решение как можно переименовать файл в zip-архиве.
Использую python 2.7 и модуль ZipFile.
Пытался изменить zipinfo, для мембера, но при распаковке пишет, что объект не найден

Nobue
12.08.2016
12:34:33

Zart
12.08.2016
12:35:52

Google

Nobue
12.08.2016
12:37:58
но сам не пробовал, не знаю насколько работает

Zart
12.08.2016
12:39:28
есть два способа - армейский и правильный...

Sergey
12.08.2016
12:42:10

Nobue
12.08.2016
12:42:57
возможно даже проще будет вызывать внешнюю утилиту вроде архиватора который это умеет, чем пытаться делать модулями

Alexey
12.08.2016
12:43:20
Дело в том, что я обрабатываю архивы, которые приходят по почте. Поэтому удалять нельзя, так как добавить не смогу.
А проблема в том, что в некоторых случаях может придти архив с чудной кодировкой в имени файла в архиве. Вследствие чего при распаковке файла происходит исключение.
Примечание: архивы создаются в основной массе в среде windows, а обрабатываю я их в linux

Nobue
12.08.2016
12:43:33
похоже эту операцию умеют только весьма продвинутые архиваторы вроде 7zip, а библиотеки редко такое могут
ну вот вариант - делать это через 7z или другой архиватор в командной строке через враппер на питоне

Sergey
12.08.2016
12:45:19

Cykooz
12.08.2016
12:51:33
Для zip есть стандарт, который позволяет сохранять информацию о кодировке внутри архива. Только вот беда в том, что стандартный архиватор Windows так и не научился это использовать. Он по прежшему сохраняет имена в локальной кодировке. При чём в разных странах это разные кодировки.

Alexey
12.08.2016
12:51:45
Кодировка не всегда известна, поэтому iconv не срабатывает.
Мысль с переименованием возникла из за того, что после распаковки архива мне нужно обработать распакованные файлы. Даже если удастся распаковать, я не смогу обработать, т.к. при операциях получения списка файлов и сборки абсолютного пути происходит исключение из за этой кодировки

Zart
12.08.2016
12:52:31

Google

Cykooz
12.08.2016
12:53:18
Да ладно ворчать - говори сразу где я не прав

Zart
12.08.2016
12:53:20
для зипа стандарта кодировки нет и не было
джава взяла зип, стандартизовала его на утф8 и добавила хмла кусок, назвав это jar'ом

Nobue
12.08.2016
12:53:33

Zart
12.08.2016
12:54:03
если архивы только от русских юзеров, то там почти поголовно 866 должна быть по идее
но я не понял про замену

Nobue
12.08.2016
12:54:39
вот Зарт верно говорит что возможно в твоем случае ограниченный набор кодировок и ты можешь просто перебрать

Cykooz
12.08.2016
12:54:40

Zart
12.08.2016
12:54:57
у вас в "почти все" только лялих и есть

Cykooz
12.08.2016
12:55:19
WinZip умеет

Zart
12.08.2016
12:55:31
сто лет не видел винзипа

Alexey
12.08.2016
12:55:49
но я не понял про замену
В смысле переименования файлов? Так я задаю имя в нужной кодировке и потом успешно обрабатываю все файл

Sergey
12.08.2016
12:56:08

Alexey
12.08.2016
12:56:19
Причем с таром такой финт получился

Zart
12.08.2016
12:56:23

Alexey
12.08.2016
12:56:36

Zart
12.08.2016
12:56:50
как обычно, модулем зипфайла
достаточно пробежаться по индексу, сделав простой анализ для детекта верной кодировки

Nobue
12.08.2016
12:57:44
я пока не знаю что у тебя там за ошибки вылезают, но возможно получится при распаковке детектить кодировку файлов и правильно ее конвертировать

Alexey
12.08.2016
12:57:53

Google

Zart
12.08.2016
12:57:55
но я бы для начала хотел бы убедится что кодировки и правда разные

Alexey
12.08.2016
12:58:03
Для этого и переименовываю

Zart
12.08.2016
12:58:31

Nobue
12.08.2016
12:59:22
Алексей, попробуй сделать как Зарт говорит)

Zart
12.08.2016
12:59:51
а вообще в линупсе есть готовая convmv тулза для этого всего

Alexey
12.08.2016
12:59:52

Zart
12.08.2016
13:00:10
convmv.noarch : Convert filename encodings
когда-то приходилось ей зоопарк из кои8р разруливать...

Alexey
12.08.2016
13:04:41
Если изначально известно какая кодировка, проблем не возникает. Но если их зоопарк, всего не предусмотришь - наверно придется писать конвейер для определения кодировки и последующей их обработки

Nobue
12.08.2016
13:04:53
ну, да

Alexey
12.08.2016
13:05:04
Всем спасибо

Nobue
12.08.2016
13:05:05
придется написать детектор кодировок или воспользоваться готовым

Nobue
12.08.2016
13:05:38
я думаю Зарт прав и на деле у тебя там кодировок будет всего несколько
может даже одна

Alexey
12.08.2016
13:05:47

Zart
12.08.2016
13:06:14
если у него пользователи с русской винды и русских локалей линукса, то вариантов должно быть ровно два
866 и утф8

Nobue
12.08.2016
13:06:44
cp1251 там разве не может быть?

Zart
12.08.2016
13:06:49
кои8р вроде вымер, если не считать пещер с бсд
а другие кодировки возможны лишь если у юзеров другие локали

Nobue
12.08.2016
13:07:22
я в этом случае писал свой мелкий модуль который пытается сделать encode/decode строки в разные кодировки, но думаю должны быть готовые модули

Zart
12.08.2016
13:07:25

Google

Cykooz
12.08.2016
13:07:46

Alexey
12.08.2016
13:07:57
Другие локали

Zart
12.08.2016
13:08:18

dmks
12.08.2016
13:08:21

Zart
12.08.2016
13:08:36

dmks
12.08.2016
13:08:49
Если бы :D

Cykooz
12.08.2016
13:09:11
Так то 9 лет уже почти

Zart
12.08.2016
13:09:44
я до сих пор центерим гоняю через луит в коях

Admin
ERROR: S client not available

Zart
12.08.2016
13:10:54
переделаю-ка...
золотая рыбка обещает исполнить любое желание
— хочу мира во всем мире!
— ну это слишком сложно... может чтото другое?
— ну тогда чтобы во всех ОС зип умел в утф8
— что ты там говорил про мир во всем мире?

Alexey
12.08.2016
13:17:40
?

Roman
12.08.2016
13:19:30
омг

53r63rn4r
12.08.2016
13:19:33
a как мне с вьюхи в джанго отдать редирект на другой сайт?

Roman
12.08.2016
13:19:40
я счас *бусь с чем то похожим

Zart
12.08.2016
13:20:17
а в чем проблема вернуть редирект?

Roman
12.08.2016
13:22:25
почаны, хелпуйте
http://pastebin.com/mMz0Kvzp

Google

Roman
12.08.2016
13:23:04
при
pip install -r re.txt
я так заебся, что даже залью на битки моему спасителю
???

[Anonymous]
12.08.2016
13:24:07

Cykooz
12.08.2016
13:24:33
У тебя же там юникод в путях
Ставь куда нить в дургое место, где только латиница в путях
c:\users\рфьшэшёЄЁрЄюЁ\appdata\local\programs\python\python35\lib\distutils\command\build_scripts.py

[Anonymous]
12.08.2016
13:25:34
Надо было мне не спрашивать...

Roman
12.08.2016
13:25:51
спс, счас попробую

Sergey
12.08.2016
13:26:08
:)

Roman
12.08.2016
13:26:09
а как
b'#!c:\\users\\\xe0\xe4\xec\xe8\xed\xe8\xf1\xf2\xf0
\xe0\xf2\xee\xf0\\appdata\\local\\programs\\python\\python35\\python.exe\n'

Cykooz
12.08.2016
13:26:11
Наверное тебе надо сам питон установить куда то в другое место

Zart
12.08.2016
13:26:19

Roman
12.08.2016
13:26:29
там же на самом деле
!#
в начале

Cykooz
12.08.2016
13:27:02

Zart
12.08.2016
13:27:31
опять красноглазые не умеют в юникод и пробелы в именах файлов, но виновата вечно винда

Cykooz
12.08.2016
13:27:59
Ну как бы винда тут сама не при чём,
Там и без питона хватает програм у которых проблемы с не-латиницей в путях

Zart
12.08.2016
13:30:00
и эти люди рассказывают про юникод 8(

Cykooz
12.08.2016
13:30:46
Ну надо же рассказывать, а то так и будем всю жизнь давать советы - "называйте все файлы транслитом"
В линухах кстати может подобная же бяка вылезти, если локаль юзера не совпадает с кодировкой имени файла на диске. Может конечно не на всех типах FS, но на ext3 это легко.

Zart
12.08.2016
13:32:28
это в юниксах от рождения
Эта группа больше не существует