Уведомления

Группа в Telegram: @pythonsu

Уведомления

  • Found 3494 posts.

Python для новичков » 2to3.py и unicode » Ноя. 25, 2009 20:44:03

Здравствуйте помогите решить проблему, пытаюсь конвертировать утилитой 2to3.py файл

BeautifulSoupTests.py:

def testHandleInvalidCodec(self):
for bad_encoding in :
Traceback (most recent call last):
File “C:\Python31\Tools\Scripts\2to3.py”, line 6, in <module>
sys.exit(main(“lib2to3.fixes”))
File “C:\Python31\lib\lib2to3\main.py”, line 159, in main
options.processes)
File “C:\Python31\lib\lib2to3\refactor.py”, line 616, in refactor
items, write, doctests_only)
File “C:\Python31\lib\lib2to3\refactor.py”, line 276, in refactor
self.refactor_file(dir_or_file, write, doctests_only)
File “C:\Python31\lib\lib2to3\refactor.py”, line 656, in refactor_file
*args, **kwargs)
File “C:\Python31\lib\lib2to3\refactor.py”, line 332, in refactor_file
write=write, encoding=encoding)
File “C:\Python31\lib\lib2to3\refactor.py”, line 432, in processed_file
self.print_output(old_text, new_text, filename, equal)
File “C:\Python31\lib\lib2to3\main.py”, line 64, in print_output
print(line)
File “C:\Python31\lib\encodings\cp866.py”, line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_map)
UnicodeEncodeError: ‘charmap’ codec can't encode character ‘\xe4’ in position 37
: character maps to <undefined>

Как победить :)?

GUI » Qt: pyrcc против файлов » Ноя. 23, 2009 16:09:14

Хочется поговорить, кто что предпочитает: использовать ресурсы Qt или обычные пути к файлам. Я использую ресурсы потому что Qt начал изучать в С++ и привык к ним, плюс не надо морочиться с путями, но не уверен насколько рационален способ хранения их в .py файлах.
Кто что использует, и что можете сказать по этому поводу?

Django » Сортировка модели в admin при заполнении foreign key » Ноя. 23, 2009 14:48:16

Суть проблемы в следующем:
1. Есть model_1 для которой задана сортировка по наименованию (Meta.ordering=).
2. Есть model_2, которая ссылается на model_1 (имеет поле “model_1 = ForeignKey(model_1)”).
3. При заполнении в админке поля model_1 для экземпляра model_2, хтмл-селект поля model_1 отсортирован по id.
Необходимо, чтобы список возможных значений внешнего ключа был отсортирован по model.Meta.ordering!
Поигрался с сортировкой ModelAdmin.ordering - пустой номер, сортировка в хтмл-селекте остается по идентификатору.

ВАЖНОЕ ДОПОЛНЕНИЕ: модель model_1 наследует от абстрактной модели model_0, а сортировка Meta.ordering= задана именно для родителя и не переопределяется в наследнике!

Проблема решается созданием дефолтного менеджера для модели, который отсортирован по нужному полю.

Посмотрел обсуждение проблемы в code.djangoproject.com, в groups.google.com и т.д. - там вопросы о сортировке хтмл-селекта согласно Meta.ordering мгновенно переводятся с статус closed без объяснений.
В документации так же есть явные указания на необходимость создания Automatic Manager и use_for_related_fields = True.

Посмотрел, как можно поправить джангу для того, чтобы она поддерживала нужное мне поведение.
Более того, считаю такое поведение самым верным - люди в основной своей массе работают со списками названий, а не идентификаторов, и приходится делать много лишних телодвижений.

Прежде чем открывать новый тикет и размещать патч, хотел обсудить необходимость сортировки хтмл-селекта по полю внешнего ключа в админке согласно model.Meta.ordering.

ДОПОЛНЕНИЕ: открывать тикет таким образом надо для наследования моделей.

Python для новичков » Парсинг RSS » Ноя. 23, 2009 13:47:44

Приветствую!

Оперирую таким способом - http://snipplr.com/view/16044/python-rss-feed-reader/, для примера беру http://lenta.ru/r/EX/import.xml :

import feedparser,sys

def f(data):
return data.encode("latin1","ignore")

try:
feed = sys.argv[1]
except IndexError:
feed = "http://lenta.ru/r/EX/import.xml"

d = feedparser.parse(feed)
#print f(d.feed.title),";",f(d.feed.link),";",f(d.feed.subtitle),";",f(d.version),";",f(d.encoding),";",len(d.entries)

for entry in d.entries:
print f(entry.title),";",
print f(entry.link),";",
try:
print f(entry.author_detail.name),";",
except AttributeError:
pass
try:
print f(entry.content)
except AttributeError:
pass
print
Почему пусто?

GUI » [Статья] Рисование трехмерных графиков в Python с помощью Pylab » Ноя. 22, 2009 21:35:48

Выложил статью про одну из новых возможностей в Matlotlib - рисование трехмерных графиков. Сама статья здесь - http://jenyay.net/Programming/Python3d

Инструментальные средства разработки » Автодополнение в Eclipse и __методы__ » Ноя. 22, 2009 21:02:15

Можно ли как-то в эклипсе убрать из автодополнения всякую служебную ерунду, начинающуюся на __ или лучше переместить ее в конец списка?

Python для новичков » distutils » Ноя. 20, 2009 12:32:32

Несколько вопросов:

- Как с помощью distutils получить в одной папке (или в архиве) все дерево файлов проекта для текущей оп.системы (скомпилированные .py, скомпилированные расширения, файлы ресурсов - картинок, бинарники и т.д.) ?

- setup.py build компилирует расширения в папку build/lib.linux-i686-2.5, как их вытянуть оттуда в сборку исходников и в папку с текущими исходниками (сейчас приходится копировать их вручную из build в соответствующую папку проекта) ?

- Как указать что все файлы должны оставаться на своих местах в дереве проекта и просто собраться в одну локальную папку, а не раскидываться в разные места типа /usr/lib/python2.5/site_packages.

Python для новичков » Pexpect вопрос » Ноя. 19, 2009 11:16:45

Приветствую всех!

Использую модуль pexpect для автозаполнения приглашений на ввод. Хочу написать скрипт, который автоматизирует работу ./build-key-pkcs12 (пакет OpenVPN).

import pexpect
import sys

gen = pexpect.spawn('./build-key-pkcs12 client2')
gen.expect('Country Name (2 letter code)*')
gen.sendline('\n')
gen.expect('State or Province Name*')
gen.sendline('\n')
gen.expect('Locality Name (eg, city)*')
gen.sendline('\n')
gen.expect('Organization Name (eg, company)*')
gen.sendline('\n')
gen.expect('Organizational Unit Name*')
gen.sendline('\n')
gen.expect('Common Name*')
gen.sendline('\n')
gen.expect('Email Address*')
gen.sendline('\n')
gen.expect('A challenge password*')
gen.sendline('\n')
gen.expect('An optional company name*')
gen.sendline('\n')
gen.expect('Sign the certificate?.*', timeout=2)
gen.sendline("y\n")
gen.expect('1 out of 1 certificate requests certified, commit?.*', timeout=2)
gen.sendline('y\r')
gen.expect('Enter Export Password')
gen.sendline('lalala')
gen.expect('Verifying - Enter Export Password')
gen.sendline('lalala')
gen.interact()
Получаю ошибку, что не может опознать следующую строку:

args:
searcher: searcher_re:
0: re.compile(“1 out of 1 certificate requests certified, commit?.*”)
buffer (last 100 chars):
before (last 100 chars):

y


after: pexpect.EOF
match: None
match_index: None
exitstatus: 0
flag_eof: True
pid: 25793
child_fd: 3
closed: False
timeout: 30
delimiter: pexpect.EOF
logfile: None
logfile_read: None
logfile_send: None
maxread: 2000
ignorecase: False
searchwindowsize: None
delaybeforesend: 0.05
delayafterclose: 0.1
delayafterterminate: 0.1
#
Подскажите пожалуйста, как исправить этот косяк, чувствую, что это может быть связано с переводами строк при запросе …:

Certificate is to be certified until Nov 17 01:15:52 2019 GMT (3650 days)
Sign the certificate? :y


1 out of 1 certificate requests certified, commit? y
Write out database with 1 new entries
Data Base Updated
Enter Export Password:

GUI » PyQt4: странности с QImage.bits() » Ноя. 19, 2009 10:54:20

В компилируемом С-модуле пытаюсь скопировать альфу QImage в 8-битный буфер (функция вызывается из отдельного QThread).
Проблема в том что данные получаются со смещением в 29 байт назад (хотя проверял значение указателя на буфер bits() в вызывающем треде и вызываемой функции - они совпадают).
При получении через pixel() в вызывающем треде все нормально, только очень медленно.

P.S. Функция выделения альфы вызывается из отдельного QThread.
Если все манипуляции делать в основном треде, или в отдельном треде, все проходит нормально.
Скорее всего что-то не то с SIP.voidptr, который возвращается из qimage.bits().

код:
///////////////////////////////////////////////////////////////////////////////////////////////////////////
// Get image alpha mask to byte buffer.
// input: QImage image.
// output: str maskBuf.
static PyObject *gray_c32GetAlphaMask(PyObject *self, PyObject *args) {
PyObject *image; // input ARGB32 QImage

// parse function parameters
if (!PyArg_ParseTuple(args, "O", &image)) return NULL;

// get image width and height
U32 w = PyInt_AsLong(PyObject_CallMethod(image, "width", NULL));
U32 h = PyInt_AsLong(PyObject_CallMethod(image, "height", NULL));

if (w*h > 0) {
// pointer to first color pixel
U32 *c32Buf = PyCObject_AsVoidPtr(PyObject_CallMethod(PyObject_CallMethod((PyObject *)image, "bits", NULL), "ascobject", NULL));
U8 *maskBuf = PyMem_Malloc(w * h); // allocate output buffer

for (U32 yCnt=0; yCnt<h; yCnt++) { // y loop
for (U32 xCnt=0; xCnt<w; xCnt++) { // x loop
*maskBuf = *c32Buf >> 24; // get pixel alpha value
c32Buf++;
maskBuf++;
}
}
return Py_BuildValue("s#", maskBuf, w*h);
}
return Py_BuildValue("O", Py_None);
}

Django » TinyMCE и Django » Ноя. 17, 2009 15:51:04

Hello.
Кто нибудь сталкивался с tinyMCE что если в админки джанги изменить размер fontа и цвет то при сохранении цвет не изменяется и отображается только новый размер фонта.



Код при этом получается такой
 <span style="color: rgb(255, 0, 0);">
<span style="font-size: xx-small;">F</span>
</span>
Но если сначала поменять цвет сохранить а потом изменить размер фонта и сохранить то такая двухфазовая операция работает. Но это как то криво
код при этом получается такой
<span style="font-size: xx-small;">
<span style="color: rgb(255, 255, 0);">A</span>
</span>

Python для новичков » лишний символ новой стоки в созданном CSV файле » Ноя. 17, 2009 13:41:17

Пишу CSV файл библиотекой

http://docs.python.org/library/csv.html

csvWriter.writerow(row)

row не содержит символов 0D

однако созданный CSV файл содержит лишний символ 0x0D в каждой строке:

0D 0D 0A

соответственно при загрузке в Excel/Calc - лишняя пустая строка после каждой строки
что я делаю не так?

Python для новичков » передача строковых данных без перекодирования » Ноя. 15, 2009 13:18:31

вот так я замеряю размер самой строки без веса класса
# -*- coding: utf-8 -*-

import sys

def ssize(s):
if type(s) == unicode: return sys.getsizeof(s)-sys.getsizeof(u'')
else: return sys.getsizeof(s)-sys.getsizeof('')

print ssize('При вет') # 13
print ssize(u'При вет') # 14
когда я через сокет передаю данные в уникоде, т.е. 14 байт
socket.send(u'При вет') #14
и на другой стороне их принимаю, приходящая строка приходит с размером в 13 байт
socket.recv() #13

т.е. при отправке строка конвертируется в utf-8, как сделать что-б она не конвертировалась (отправить raw данные)?

Python для новичков » Преобразовать строку списка в список целых » Ноя. 15, 2009 09:10:12

входные данные: list_str =
Выходные: list_int =

Возможное решение:
list_int=map(lambda x: int(x),list_str[0].split(','))
Можно как-нить покороче и быстрее?
Заранее спасибо

Django » По instance field узнать к какой модели относится » Ноя. 14, 2009 16:10:32

Как по instanc-у field узнать к какой модели относится экземпляр?

Network » paramiko и output » Ноя. 13, 2009 16:14:42

Здравствуйте.

import paramiko
s = paramiko.SSHClient()
s.load_system_host_keys()
s.connect('test.host')
stdin, stdout, stderr = s.exec_command('kings of metal; uname -a')

Но меня не устраивает stdout, stderr.
как завернуть stderr в stdout в данном конкретном случае.
Мне по сути надо.
$ ssh test.hos “kings of metal; uname -a” >> /tmp/logfile 2>&1

Python для новичков » Помогите пожалуйста с кодировкой » Ноя. 13, 2009 14:15:34

Новичок.

Поискал по форуму и долго гуглил - но видимо из - за незнания сути проблемы решить не могу на данный момент следующую проблему:

Есть задача - приходит get запрос с параметром referal содержащим текст document.referrer - которому я предварительно делаю encodeURIComponent:

В итоге на сервере я имею в переменной ref например следующее:
http://yandex.ru/yandsearch?text=%D1%81%D0%B5%D0%BA%D1%81+%D1%88%D0%BE%D0%BF&lr=5&stpar2=%2Fh1%2Ftm34%2Fs3&stpar4=%2Fs3&stpar1=%2Fu0
или
ref: http://www.google.ru/search?q=%D1%81%D0%B5%D0%BA%D1%81+%D1%88%D0%BE%D0%BF&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox

Так, здесь вроде бы пока все хорошо, пояснять зачем я делаю encodeURIComponent перед отправкой думаю не следует - мне нужна строка целиком включая параметры идущие за спецсимволами вроде &.

Насколько я знаю по RFC - encodeURIComponent заэскейпил строку в UTF8, т.о тут строка содержащая заэскепенный текст скорее всего в кодировке utf8
Далее мне надо выделить фразу по которой был поиск, которая в google отвечает за это:
    def parse_search(url):
try:
parsed = urlparse.urlsplit(url)
network = parsed[1]
query = parsed[3]
except (AttributeError, IndexError):
return (None, None, None)
for engine, param in SEARCH_PARAMS.iteritems():
match = re.match(NETWORK_RE % engine, network)
if match and match.group(2):
term = cgi.parse_qs(query).get(param)
if term and term[0]:
term = ' '.join(term[0].split()).lower()
return (engine, network, term)
return (None, network, None)
-
После этого параметр term содержит фразу:
        logging.info("term: %s", term)
Выдает:
[I 091113 14:08:11 demo:333] term: &#241;&#65533;&#240;µ&#240;&#186;&#241;&#65533; &#241;&#710;&#240;
мне не важно как в логах это выводится поэтому иду дальше,

Далее мне надо обратно передать эту строку в json
пытался так
term = simplejson.dumps(term)
'term': '"\\u00f1\\u0081\\u00f0\\u00b5\\u00f0\\u00ba\\u00f1\\u0081 \\u00f1\\u0088\\u00f0\\u00be\\u00f0\\u00bf"',
Пытался сделать по - разному - эффект - разного рода кракозяблы на стороне клиента. Использую jQuery.
При этом передавая строку в таком виде
'title': u'\u0421\u0435\u043a\u0441 \u0448\u043e\u043f'
на стороне клиента она отображается верно
——–
Попытка 2
Вопрос: как строку
 term = (urllib.unquote_plus(term))
вида
'term': u'\xf1\x81\xf0\xb5\xf0\xba\xf1\x81 \xf1\x88\xf0\xbe\xf0\xbf'
перевести в нечто подобное:
 u'\u0421\u0435\u043a\u0441 \u0448\u043e\u043f'
Заранее благодарю сообщество за возможную помощь или совет по делу!

читал форум здесь
http://python.su/forum/viewtopic.php?id=5370
http://python.su/forum/viewtopic.php?id=3436
не помогло пока.

Web » apache + wsgi, общие ресурсы, возможно? » Ноя. 12, 2009 16:50:09

при запуске wsgi приложения запоминаю время, а при генерации страницы вывожу это время.
в результате, при частом обновлении страницы, выдается 3 разных времени. ( т.е. запущенно 3 копии проложений )

думаю апач запускает несколько копий если пришел запрос от клиента когда первая копия ещё не отработала.

как сделать что-б в скрипте можно было использовать общие ресурсы?

код:
# coding: utf-8

import time

counter = 0
start = time.ctime()

def application(environ, start_response):
global counter,start
counter += 1

status = '200 OK'
output = 'Start time: %s<br/>\nCounter: %d' % (start,counter)

response_headers = [('Content-type', 'text/html; charset=utf-8'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)

return [output]

GUI » Класс стандартного окна » Ноя. 12, 2009 00:14:24

Есть мысль сделать класс окна, и на основе его создавать объекты по мере необходимости.
Окно должно иметь панель инструментов, панель статистики и между ними табличка.
Панели инструментов должны иметь постоянную высоту, а табличка должна меняться по высоте , если мы начинаем увеличивать окно.
Вот я сварганил, такой класс, но что-то не того … не получается.
Помогите пока, что начинающему питонному программеру )))

Вот сам текст проги:
# -*- coding: cp1251 -*-
from Tkinter import *
import sys
import time

from TableList import *


class Aplication(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
# Пакуем окошко
self.pack()
#Создаем виджеты
self.createWidgets()

def createWidgets(self):
#Узнаем размеры экрана и задаем минимальные и максимальные размеры окна, тут у нас всё максимально
self.master.maxsize(self.winfo_screenwidth(),self.winfo_screenheight())
self.master.minsize(self.winfo_screenwidth(),self.winfo_screenheight())
self.master.title = "Справочник"
#Создаем рамку не всё окно, чтобы можно было применять различные менеджеры
self.mframe = Frame(self)
self.mframe.width = self.winfo_screenwidth()
self.mframe.height = self.winfo_screenheight()
#Растягиваем рамку на все окно
self.mframe.pack(expand = YES)
#Создаем панель инструментов
self.toolbar = Frame(self.mframe)
self.toolbar["borderwidth"]=2
self.toolbar["relief"]=RAISED

# self.toolbar.pack(fill=X)
#Нихай занимает 10% по высоте
self.toolbar.place(relx= 0.1, rely=1)
#Место для таблички
self.work = Frame(self.mframe)
self.work["borderwidth"]=2
self.work["relief"]=RAISED
# self.work.pack(fill = BOTH)
#нихай занимает 80% окна
self.work.place(relx=0.8, rely=1)
# панель статуса
self.statusbar = Frame(self.mframe)
self.statusbar["borderwidth"]=2
self.statusbar["relief"]=RAISED
# self.statusbar.pack(fill = X)
#Нихай занимает 10%
self.statusbar.place(relx=0.1,rely=1)

#Ну тут в панель инструментов кидаем всякие кнопки

self.butAdd = Button(self.toolbar,text = "Добавить")
self.butAddPap = Button(self.toolbar,text = "Группа")
self.butDel = Button(self.toolbar,text = "Удалить")
self.butSelFiltr = Button(self.toolbar,text = "Фильтр")
self.butDelFiltr = Button(self.toolbar,text = "Удалить фильтр")
self.butAdd.pack(side=LEFT)
self.butAddPap.pack(side=LEFT)
self.butDel.pack(side=LEFT)
self.butSelFiltr.pack(side=LEFT)
self.butDelFiltr.pack(side=LEFT)


# +++++++++++++++++++++++++++Таблица+++++++++++++++++++++++++++++++++++++++++
tl = TableList(self.work, stretch='all', showarrow=True, columns = (5, 'Код', 0, "Название", "left", 0,"Примечание", 'right'),
)
tl.pack(fill="both")

tl.columnconfigure(0, showlinenumbers=True,)

tl.columnconfigure(1, sortmode='ascii', sortcommand='sortbycolumn')

tl.columnconfigure(2, sortmode='ascii', sortcommand='sortbycolumn')
tl.curselection()
#Ну и статус чтоб не был пустым
self.message = Label(self.statusbar, text='Привет, библиотека Tk!')
self.fortime = Label(self.statusbar, text= time.time() )
self.message.pack(side =LEFT)
self.fortime.pack(side = RIGHT )
#Усё пр херим
def die(self):
sys.exit(0)
#Ну тут шоб можно было опробывать
if __name__ == "__main__" :
app = Aplication()
app.mainloop()
И ни фига, окошко рисуется а в нем шиш ((((
С Pack() все работало, но не знаю как добиться, чтобы все растягивалось при изменении размеров окна

Python для Java » Вопрос » Ноя. 10, 2009 18:21:59

Извините, если туплю.

Google App Engine поддерживает Jython? Если да, то какие тонкости, ведь, как я понял, в версии 2.5 есть проблемы со статической компиляцией в Java-классы?

Флейм » Ведущий Python программист (game development) 80 000 руб » Ноя. 10, 2009 17:11:39

Для работы над серверной частью ММО игры с flash клиентом, требуется ведущий программист.

Обязанности:

Построение архитектуры серверной части
Проектирование базы данных
Разработка системных служб и сетевых сервисов
Разработка игровой механики
Разработка игрового инструментария

Требования

Отличное знание Python
Отличное знание реляционных баз данных, опыт работы с MySQL и/или PostgreSQL
Хорошая алгоритмическая подготовка

Желательно

Опыт работы с Twisted
Опыт участия в игровых проектах (с client/server архитектурой)
Опыт написания сетевых протоколов
Опыт оптимизации приложений
Опыт программирования на C/C++
Знание сетевых технологий и протоколов
Законченное высшее техническое образование

Условия

Полный рабочий день, м.Красные ворота
Гибкий график работы
Заработная плата от 80000р по результатам собеседования (чистая)
Оформление по ТК РФ
Профессиональная команда разработчиков

Панько Александр
god@panki.ru
+7 926 479-2443