Насчет указания кодировки 15 файлам - это да. А вот насчет 15 файлов в разных кодировках, то я такого изврата еще не видел. Не вижу смысла практического использования даже.
Code: import struct per = struct.pack("<L", 0x71AB9372) Дальше в зависимости от того что и как там нужно. Смотри справку по модулю struct upd. Кажется так (аналог "V" для PERL, если я не ошибаюсь)
Code: def bash(): res = urllib.request.urlopen('http://bash.org.ru/random') res= str(res.read()) s=re.search(r"<div>(.*?)<\/div>",res) for x in s.groups(): print(x.decode('cp1251')) Как сделать, чтобы выводил русский текст? python v. 3.1
В 3.1. по-другому нужно попробуй так. Code: res = urllib.request.urlopen('http://bash.org.ru/random') res= res.read() s=re.search(r"<div>(.*?)<\/div>",res) for x in s.groups(): print(x.decode('cp1251').encode("cp866"))
Code: res = urllib.request.urlopen('http://bash.org.ru/random') res= res.read().decode('cp1251') s=re.search(r"<div>(.*?)<\/div>",res) for x in s.groups(): print(x.encode("cp866")) А так ? П.С. Винда ?
Там в 3.1 меня напрягает этот bytes тип данных. Мне, как привыкшему к 2.6 сложно выкупить там все эти хитросплетения. Фактически, у bytes есть возможность сделать только .decode(), после которого они превращаются в str в кодировке UTF-8, обьекты типа str можно только encode() в bytes кодировки, указанной при вызове encode(). Т.е после .decode получаем str с возможностью вызова только .encode(), а после encode() получаем bytes с возможностью вызова исключительно .decode() для получения str. Какая-то блин слишком strict работа с кодировками ИМХО. Я привык к типу данных unicode в 2.6 который мне уже кажется очень простым и гибким при работе с кодировками. Хотя я конечно, в экстазе от: Code: import sys def жаба(): print "Я квакаю".encode(sys.getdefaultencoding()) Судя по отсутствию комментов к этому посту скорее всего все подумали "Какого хрена он это написал???" Обьясню код от rushter с точки зрения Python 3.1 и Python 2.6: Code: # -*- coding: UTF-8 -*- import re,urllib res = urllib.urlopen('http://bash.org.ru/random') res= res.read().decode('cp1251')#Вот здесь вот с точки зрения Python2.6 Идет: .read() - чтение данных, которые имеют тип str(некая абстрактная строка в неизвестной кодировке(для python)),потом идёт перевод этой строки в тип unicode(это для Python едино и понятно). С точки зрения Python3.1 здесь при .read() идёт чтение в этот новый тип bytes, которые представляют собой "просто байты", работать с этим типом как со строковыми данными нельзя, для этого необходимо сделать .decode() из кодировки этих байтов, в результате чего они преображаются в тип str, который являет собой строку в кодировке UTF-8 (фактически, насколько я понял, str - это тот же unicode, просто что все четко прописано) s=re.search(r"<div>(.*?)<\/div>",res) for x in s.groups(): print(str(x))#Вот здесь идет вывод собранных данных в консоль, вот здесь то меня и напрягает то, что на печать все пошло нормально, либо Python автоматически переводит весь вывод в кодировку терминала, либо у Ice_VeNOm кодировка терминала - UTF-8. И вот такое преображение в str()оно здесь не нужно нафик (по идее) Хз короче, путаница одна с этим Python 3.1. Мб кто из опытных обьяснит, что там с этим bytes и str, ато я вроде и понимаю что они это типа аналог unicode из 2.6, и все равно как-то стремно их воспронимать так же =\
py2exe и MySQLdb [RSS Feed] есть скрипт, парсер лог файла, после парсинга данные заносятся в базу попытался скомпилировать в exe, после запуска ехешника получил ошибку попробовал скомпилировать простейший скрипт print "Hello World!" - все нормально ехешник работает попробовал добавить первые строки кода парсера Code: import re import time import os import MySQLdb получил ошибку D:\Python!\PARSER\dist>hello.exe Traceback (most recent call last): File "hello.py", line 4, in <module> File "MySQLdb\__init__.pyc", line 19, in <module> File "_mysql.pyc", line 12, in <module> File "_mysql.pyc", line 10, in __load ImportError: DLL load failed: =х эрщфхэ єърчрээvщ ьюфєы№. как решить эту проблему с mysqldb?
Посмотри какие там есть DLL-ки и закинь их в c:\python\dll P.S. Рекомендую GUI2exe - это написанный на wxpython Гуи-интерфейс для "Собиралок" в экзе
по совету с другого форума уже посмотрел с помощью depends каких длл не хватает и прописал их в setup.py все заработало но есть еще один вопрос, запускаю ехе через командную строку вначале идет такая строка D:\Python!\PARSER\dist\library.zip\MySQLdb\__init__.py:34: DeprecationWarning: the sets module is deprecated что то про устаревший модуль, стоит разбираться с этим или ничего страшного?
Ничего страшного, это простой ворнинг, не более того. это информация на заметку скорее для разработчиков py2exe, чем для тех кто им пользуется
на ХР все работает без проблем попробовал на винсервер 2003 программа зависает и через секунд 10 закрывается без ошибок проверил длл - не хватало msjava.dll и msvcr90.dll добавил, попробовал снова запустить - все равно зависает поставил туда питон запускаю скрипт зависает на этой строке Code: db = MySQLdb.connection(host="localhost", user="root", passwd="", db="test") висит 5-10 секунд, потом и редактор и шелл закрываются без ошибки в чем может быть проблема?
Смахивает на то, что по таймауту рвет соединения. А мускул крутится ? P.S. Попробуй через командную строку запустить. Мб фаер режет.
через командную строку вроде пустило Code: D:\webserver\MySQL Server 5.1\bin>mysql -u root -p Enter password: ******** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.1.39-community MySQL Community Server (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> мускул работает нормально т.е. скрипт на пхп из мускула данные забирают без проблем
Я имею ввиду мб фаер режет саму твою екзеху. Попробуй запустить именно собранную тобой exe через консоль. Там тебе должно показать трейсбек (естественно, только в том случае, если на критической секции ошибка не убивается простым try: except что чревато "безмолвным"слетанием).Просто даже если там ошибка какая-то то не факт что ты ее увидишь - окно слишком быстро закрывается.
через командую строку тоже самое никакой ошибки try: except в том куске кода нет и фаера тоже не стоит там...