Зависит от порядка передачи аргументов в ф-цию, если передаем не по порядку определенном в прототипе дк так и надо писать )
В py3k по умолчанию идет чтение. Во-вторых, там порядок такой (имя, режим, кодировка= ). Так что это там ни при чем ) encoding = encoding..я теперь спать не буду ответь мне!
Ты прафф, я привык к некоей недисциплинированности, часть параметров передаю по порядку, часть по именованию, когда как короче P.S. Только что разбирался с кодировками в py3k все немного не так как я представлял, немного парят танцы с бубном. В качестве внутреннего отображения выбран utf8 , я привык его считать отличным от юникода, поэтому мои надежды на красивое string_in_utf8 = inside_string.encode("utf8") разбились в прах, приходится шаманить и сначала переводить в байты, а потом в нужную кодировку string_in_cp1251 = inside_string.encode("utf8").decode("cp1251") Чет как-то не так как хотелось бы
Ну почему же, он прав, просто я не указываю режим работы с файлом, ибо мне нужно чтение, поэтому приходится указывать параметры функции кусками, т.е. по хорошему это должно выглядеть либо open(file="bla.txt", encoding="cp1251"), либо open("bla.txt", "r", None, "cp1251"), я юзаю недисциплинированно-гибридный вариант open("bla.txt", encoding="cp1251") , оставляя значение режима работы с файлом по умолчанию, каюсь, обязательно исправлюсь (если не забуду ) P.S. порядок там такой
По-моему, ты написал ровно тоже что и я и не ответил на главный вопрос! Похоже, что я непонятно задаю вопрос. Зачем ты пишешь: Code: open("bla.txt", encoding=encoding) open(outfile, "a", encoding=encoding) Когда можно: Code: 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, мне же нужно записать в другой...
Можно. Но так удобней. Смысл лишних телодвижений + отслеживания всех своих действий с ними , если можно просто сделать encoding=encoding ?
В той же степени лишними телодвижениями можно назвать 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.
Нужна помощь, скачал python с офф сайта http://www.python.org, и не как ни разобратся, как запустить скрипт подскажите плиз!!!
Устанавливаешь Python (куда угодно), потом двойной клик на скрипте, и он запустится (если нет проблем с кодировками, синтаксических ошибок, и ты угадал с версией Python)
Там получится не программа Там выйдет интерпретатор+все модули+сам скрипт, фактически если кто из знакомых собрался юзать твои творения, то после 3 где-то творений, слепленных в екзе уже имеет смысл качать интерпретатор, + я хз насколько хорошо будет работать Tkinter + threading , если он будет юзатьза через py2exe, они и так не шибко так дружат между собой Да и вообще, лучше юзать интерпретатор, чем такие цацки
_http://docs.python.org/library/httplib.html _http://www.python.org/doc/2.5.2/lib/httplib-examples.html
Code: import urllib page = urllib.urlopen("http://www.google.com").read() Или нужно пониже уровнем ? Code: >>> import httplib >>> conn = httplib.HTTPConnection("www.python.org") >>> conn.request("GET", "/index.html") >>> r1 = conn.getresponse() >>> print r1.status, r1.reason 200 OK >>> data1 = r1.read() >>> conn.request("GET", "/parrot.spam") >>> r2 = conn.getresponse() >>> print r2.status, r2.reason 404 Not Found >>> data2 = r2.read() >>> conn.close( (c) docs.python.org