@python_beginnersЭта группа больше не существует

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

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

Zart
12.08.2016
12:35:52
Cython меж тем вообще никакого отношения не имеет к интерпретаторам
в девичестве его вообще звали Pyrex, поэтому ситон и поныне использует файлы .pyx

Google
Nobue
12.08.2016
12:37:58
Подскажите, пожалуйста, решение как можно переименовать файл в zip-архиве. Использую python 2.7 и модуль ZipFile. Пытался изменить zipinfo, для мембера, но при распаковке пишет, что объект не найден
можно попробовать сделать так - удалить файл из архива (http://stackoverflow.com/questions/513788/delete-file-from-zipfile-with-the-zipfile-module) и добавить его потом под новым именем

но сам не пробовал, не знаю насколько работает

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 или другой архиватор в командной строке через враппер на питоне

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

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

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

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

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
но я не понял про замену
В смысле переименования файлов? Так я задаю имя в нужной кодировке и потом успешно обрабатываю все файл

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

Zart
12.08.2016
12:56:23
В смысле переименования файлов? Так я задаю имя в нужной кодировке и потом успешно обрабатываю все файл
лучше распаковывай на лету корректно, это вполне можно реализовать питоном

Zart
12.08.2016
12:56:50
как обычно, модулем зипфайла

достаточно пробежаться по индексу, сделав простой анализ для детекта верной кодировки

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

Alexey
12.08.2016
12:57:53
как обычно, модулем зипфайла
Если кодировка utf-8 да, но если отличная от нее то происходит исклюяение

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
но я бы для начала хотел бы убедится что кодировки и правда разные
Можно легко провести эксперимент, добавить в zip-архив файл с кириллическими символами в cp866 и попробовать распаковать в линухе питоновским скриптом

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
я думаю Зарт прав и на деле у тебя там кодировок будет всего несколько

может даже одна

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
cp1251 там разве не может быть?
а вот не уверен. потому что питон как и любая консольная по дефолту работает с оем кодировкой

Google
Cykooz
12.08.2016
13:07:46
для зипа стандарта кодировки нет и не было джава взяла зип, стандартизовала его на утф8 и добавила хмла кусок, назвав это jar'ом
Кстати стандарт таки есть: Bit 11: Language encoding flag (EFS). If this bit is set, the filename and comment fields for this file MUST be encoded using UTF-8. (see APPENDIX D) https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT

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

Cykooz
12.08.2016
13:09:11
Revised: October 1, 2014 очень вовремя, блядь
6.3.2 -Added compression method 97 09/28/2007 -Documented InfoZIP "Extra Field" values for UTF-8 file name and file comment storage

Так то 9 лет уже почти

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

Admin
ERROR: S client not available

Zart
12.08.2016
13:10:54
6.3.2 -Added compression method 97 09/28/2007 -Documented InfoZIP "Extra Field" values for UTF-8 file name and file comment storage
туда много чего еще довозили - поддержку 64бит размеров файлов, шифрование и новые виды компрессии это очень помогает для кода, написанного в 2000м

переделаю-ка... золотая рыбка обещает исполнить любое желание — хочу мира во всем мире! — ну это слишком сложно... может чтото другое? — ну тогда чтобы во всех ОС зип умел в утф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

я так заебся, что даже залью на битки моему спасителю

???

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
ни разу не проблема
Ну вот для setup.py внутри websocket-client почему то это не понравилось

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
это в юниксах от рождения

Страница 287 из 1885

Эта группа больше не существует Эта группа больше не существует