ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #221  
Старый 15.07.2009, 14:29
Аватар для razb
razb
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме:
2868783

Репутация: 414


Отправить сообщение для razb с помощью ICQ
По умолчанию

Цитата:
Я знаю, что такoe 'encoding', но зачем писать encoding=encoding, разве это нельзя опустить?
Зависит от порядка передачи аргументов в ф-цию, если передаем не по порядку определенном в прототипе дк так и надо писать )
 
Ответить с цитированием

  #222  
Старый 15.07.2009, 14:38
Аватар для Fata1ex
Fata1ex
Постоянный
Регистрация: 12.12.2006
Сообщений: 906
Провел на форуме:
4205500

Репутация: 930


По умолчанию

В py3k по умолчанию идет чтение. Во-вторых, там порядок такой (имя, режим, кодировка= ). Так что это там ни при чем )
encoding = encoding..я теперь спать не буду ответь мне!
 
Ответить с цитированием

  #223  
Старый 15.07.2009, 14:44
Аватар для login999
login999
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
Провел на форуме:
4512757

Репутация: 973


По умолчанию

Цитата:
Сообщение от razb  
Зависит от порядка передачи аргументов в ф-цию, если передаем не по порядку определенном в прототипе дк так и надо писать )
Ты прафф, я привык к некоей недисциплинированности, часть параметров передаю по порядку, часть по именованию, когда как короче

P.S. Только что разбирался с кодировками в py3k все немного не так как я представлял, немного парят танцы с бубном. В качестве внутреннего отображения выбран utf8 , я привык его считать отличным от юникода, поэтому мои надежды на красивое string_in_utf8 = inside_string.encode("utf8") разбились в прах, приходится шаманить и сначала переводить в байты, а потом в нужную кодировку string_in_cp1251 = inside_string.encode("utf8").decode("cp1251")
Чет как-то не так как хотелось бы
 
Ответить с цитированием

  #224  
Старый 15.07.2009, 14:48
Аватар для login999
login999
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
Провел на форуме:
4512757

Репутация: 973


По умолчанию

Цитата:
Сообщение от Fata1ex  
В py3k по умолчанию идет чтение. Во-вторых, там порядок такой (имя, режим, кодировка= ). Так что это там ни при чем )
encoding = encoding..я теперь спать не буду ответь мне!
Ну почему же, он прав, просто я не указываю режим работы с файлом, ибо мне нужно чтение, поэтому приходится указывать параметры функции кусками, т.е. по хорошему это должно выглядеть либо open(file="bla.txt", encoding="cp1251"), либо open("bla.txt", "r", None, "cp1251"), я юзаю недисциплинированно-гибридный вариант open("bla.txt", encoding="cp1251") , оставляя значение режима работы с файлом по умолчанию, каюсь, обязательно исправлюсь (если не забуду )

P.S. порядок там такой
Цитата:
open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)

Последний раз редактировалось login999; 15.07.2009 в 14:53..
 
Ответить с цитированием

  #225  
Старый 15.07.2009, 18:20
Аватар для Fata1ex
Fata1ex
Постоянный
Регистрация: 12.12.2006
Сообщений: 906
Провел на форуме:
4205500

Репутация: 930


По умолчанию

По-моему, ты написал ровно тоже что и я и не ответил на главный вопрос!
Похоже, что я непонятно задаю вопрос. Зачем ты пишешь:
Код:
open("bla.txt", encoding=encoding)
open(outfile, "a", encoding=encoding)
Когда можно:
Код:
open("bla.txt")
open(outfile, "a")
Цитата:
я привык его считать отличным от юникода
Unicode Transformation Format

Последний раз редактировалось Fata1ex; 15.07.2009 в 18:33..
 
Ответить с цитированием

  #226  
Старый 15.07.2009, 18:51
Аватар для login999
login999
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
Провел на форуме:
4512757

Репутация: 973


По умолчанию

Цитата:
Сообщение от Fata1ex  
По-моему, ты написал ровно тоже что и я и не ответил на главный вопрос!
Похоже, что я непонятно задаю вопрос. Зачем ты пишешь:
Код:
open("bla.txt", encoding=encoding)
open(outfile, "a", encoding=encoding)
Когда можно:
Код:
open("bla.txt")
open(outfile, "a")
Unicode Transformation Format
Ы )
Теперь понял )
Я указываю питону кодировку файла, из которой ему перегонять в utf8 (мну кагбэ привык к тому что в файлах не всегда находится латиница), и когда потом работаю с этими данными, то уже 100 % знаю, что они в utf8, и с какой кодировкой мне работать, как пример, то обрати внимание на то то я тебе скинул в ПМ, это контейнер, я указываю кодировку только когда в него что-либо гружу, потом я уже 100 % знаю с какой кодировкой я работаю, и не мучаюсь с этим вопросом, П.С. Сие есть одна из траблов кроссплатформа

Короткий вариант :
Я читаю из файла который в одной кодировке, а другой файл открываю на запись в другой кодировке.
Действует так:
Открываю файл cp1251.txt , указывая питону что он работает с кодировкой cp1251, он перегоняет данные в нем из cp1251 в utf8 (используется для внутреннего представления), потом я открываю файл utf8.txt с правами на добавление в конец файла и указываю что питону нужно писать в него в кодировке utf8, и он пишет туда файл в utf8, то есть перекодирование осуществляется интерпритатором автоматически, и я не изьебываюсь на эту тему

open("bla.txt") открывает файл для чтения/записи в кодировке utf8, мне же нужно записать в другой...

Последний раз редактировалось login999; 15.07.2009 в 18:56..
 
Ответить с цитированием

  #227  
Старый 15.07.2009, 19:01
Аватар для Fata1ex
Fata1ex
Постоянный
Регистрация: 12.12.2006
Сообщений: 906
Провел на форуме:
4205500

Репутация: 930


По умолчанию

Разве нельзя изменить кодировку без encoding=encoding после открытия файла и записать в нужной?
 
Ответить с цитированием

  #228  
Старый 15.07.2009, 20:03
Аватар для login999
login999
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
Провел на форуме:
4512757

Репутация: 973


По умолчанию

Цитата:
Сообщение от Fata1ex  
Разве нельзя изменить кодировку без encoding=encoding после открытия файла и записать в нужной?
Можно. Но так удобней.
Смысл лишних телодвижений + отслеживания всех своих действий с ними , если можно просто сделать encoding=encoding ?
 
Ответить с цитированием

  #229  
Старый 15.07.2009, 21:40
Аватар для Fata1ex
Fata1ex
Постоянный
Регистрация: 12.12.2006
Сообщений: 906
Провел на форуме:
4205500

Репутация: 930


По умолчанию

В той же степени лишними телодвижениями можно назвать encoding=encoding просто меня удивила конструкция, я не придираюсь )
 
Ответить с цитированием

  #230  
Старый 15.07.2009, 23:11
Аватар для login999
login999
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
Провел на форуме:
4512757

Репутация: 973


По умолчанию

Цитата:
Сообщение от Fata1ex  
В той же степени лишними телодвижениями можно назвать encoding=encoding просто меня удивила конструкция, я не придираюсь )
Честно говоря не вижу ничего удивительного в том, чтобы использовать то что упрощает мне жизнь .Тем более что с кодировками у начинающих постоянно вылазят траблы, для меня то это вообще был жуткий кошмар, на словах все вроде просто, а на деле траблы вылазят почему-то.

Просто вместо того чтобы заниматься перекодированием после загрузки, лучше этот момент затронуть сразу же при загрузке, дабы потом не теряться, особенно напрягает это когда данные в софт загружаются из нескольких источников из одной кодировки а отправляются в другой кодировке, выводить это нужно в терминал/гуй в третьей кодировке, дабы не было проблем, классический пример - спамер, где в него данные грузятся из cp1251, отправляются в utf8, а в консоль/Gui нужно выводить в unicode , это относится к 2.6.2 , попробуй сделать в виндовой консоли три print (в 2.6.2 это имеется ввиду строка вида u"Кириллица", строку в utf8 и строку в cp1251) ,а потом глянь на результат, тогда поймешь из-за чего траблы с кодировкой и откуда такая радость по поводу encoding=encoding. Вот то что я тебе прислал в 2.6 занималось тем что хранило в себе юникод, т.е. я тупо дал ему хэндлер на последовательность/итератор, указал кодировку и он его загрузил в себя, после чего я не парюсь на тему с какой кодировкой я работаю, а теперь представь себе цепочку преобразований/запоминаний, которые необходимы для того чтобы обходиться без таких как, никто не говорит что они незаменимы, они упрощают жизнь, и представь реакцию того, кто только взялся за 2.6 Python и у него в консоли лезут крякозябры, а он не может толком вьехать в причину сего трабла. То что сейчас кажется элементарным тогда мну заставляло чуть ли не в истерике биться, ибо на все вопросы отправляли в гугл, а сам вьехать не мог.

P.S. Есть два нюанса:
1. Я самоучка
2. Ситуация с такими манипуляциями (имеется ввиду ручное перекодирование) хороша только в мелочах, дальше удобнее и лучше юзать единое кодирование для внутреннего представления, которого в 2.6 не было, для чего и придумывалось куча велосипедов, и из-за чего такое появилось в 3.1.

Последний раз редактировалось login999; 15.07.2009 в 23:16..
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ