Уведомления

Группа в Telegram: @pythonsu

Уведомления

  • Found 3488 posts.

Django » Django-hosts и DEFAULT_HOST » Янв. 7, 2012 20:35:41

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

В какое значение нужно поставить параметр DEFAULT_HOST чтобы приложение с этой аппой нормально работало?
Перепробовал уже и www, localhost и example.com ничего не помагает. Выкидывает со следующим exception:

ImproperlyConfigured: Invalid DEFAULT_HOST setting: No host called ‘localhost’ exists

Флейм » Требуется web-программист Django/Python (удалённо) » Янв. 5, 2012 08:31:07

Требуется программист.
Работа удалённая.

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

Написание кода.
Функции оплаты.
Интернет-магазин.
Нужно в паре с другим программистом завершить проект.
Оптимизация кода как своего, так и существующего на данный момент.
Разработка архитектуры БД.
Знание Django/Python.

Это больше проект, нежели вакансия, сейчас мы ищем человека на конкретный проект, но также возможно сотрудничество на постоянной основе.

Обязательные требования:
1. Знание языка программирования Python, опыт работы с Django
Именно ЗНАНИЕ и ОПЫТ!!!
2. Умение разбираться в чужом коде и продолжать деятельность на основе существующих наработок.

Писать на bee-cool@inbox.ru

GUI » PyQt4 - перекодировка в MVC (WinXP / Access / pyodbc) » Янв. 4, 2012 09:49:15

Исходные:
ось - Win XP SP3
питон - 2.7
пакт - 4.8 (абстрактная модель + вьюеры таблиц и списков)
БД - pyodbc коннектит файло формата .mdb (MS Access) драйвером “Driver do Microsoft Access” (через “Администрирование источников ODBC”, сервера нет)
… се-ля-ви

прошу подсказать каким образом можно глобально указать, что при читении, а может лучше при визуализации строковые данные нужно декодировать из кодировки Windows (в моем случае подходит ‘cp1251’)
я то решил проблему на первых парах, отлавливая поля типа строка/текст и заменяя их на декодированные, но как подсказывает дока, это можна сделать красиво… не понял пока как …

… знал бы где упадешь … вырыл бы яму … ;)

Флейм » Требуется питон программист для доведения скрипта до ума » Янв. 3, 2012 20:12:56

Есть скрипт многопоточный. Но с ним миллион проблем. Скрипт проверяет хуиз доменов.
То рам сжирает весь.
Так же после какого то времени работы значительно снижается скорость (на запуске 1мб в сек, через пару часов 1мб в 10-15 минут).
То зависает (причём как то странно в одно время, но скорее проблема сервера какая то).
Входной файл весит пару ГБ.

Вобщем нужен человек довести скрипт до ума. Предложения в пм или аську 214-2o5-427.
Спасибо за внимание :)

Python для новичков » Проблема с установкой модуля MySQLdb в Windows XP SP3 » Янв. 3, 2012 19:59:33

Скачал модуль отсюда http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.3/
Как обычно распаковал и набрал команду “python setup.py install”.
Установка успешно не завершилась.

C:\del\MySQL-python-1.2.3>python setup.py install
Traceback (most recent call last):
File "setup.py", line 15, in <module>
metadata, options = get_config()
File "C:\del\MySQL-python-1.2.3\setup_windows.py", line 7, in get_config
serverKey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, options['registry_key'])
WindowsError: [Error 2]
Оно вроде просит ключ к установленному MySQL Server'у. Я же хочу поставить модуль без установки сего, мне он нужен будет только для нескольких комманд:
connect - подключение к серверу по IP-адресу
insert - для обновления БД

Помогите, кто знает. Помощь через TeamViewer приветствуется.

UPD: попробовал взять отсюда http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python (версия 2.5 win32). Не поставилась, так как установка не видит Python. У меня стоит Portable Python 2.5.4. Пути к нему в системе прописаны, в регистре чисто.

Центр помощи » обращение к классу в DLL » Янв. 3, 2012 08:42:37

Добрый день! пытаюсь реализовать проект на питоне, по проекту на си++
пытаюсь обратиться к классу , подскажите как его описать и т.д может кто ссылки кинет интересные
printf( “Enter DLL path: ” );
char str;
scanf( “%s”, &str );

NSRecallNetwork nn( str );
if( !nn.IsLoaded() )
{
printf( “Cannot load DLL from ‘%s’\n”, str );
getch();
return 0;
вот на си++
автор обращается к классу nsrecallnetwok
ттоесть его необходимо описать а потом обратиться я правильно понимаю ?

Python для новичков » python enigma2 » Янв. 2, 2012 08:42:48

Здравствуйте
Уважаемые помогите пожалуйста подправить два файла CaidDisplay.py и RendCaids.py

/usr/lib/enigma2/python/Components/Converter/CaidDisplay.py
from Components.Converter.Converter import Converter
from enigma import iServiceInformation, iPlayableService
from Components.Element import cached
from Poll import Poll

class CaidDisplay(Poll, Converter, object):
def __init__(self, type):
Poll.__init__(self)
Converter.__init__(self, type)
self.type = type
self.systemCaids = {
"26" : "BiSS",
"01" : "SEC",
"06" : "IRD",
"17" : "BET",
"05" : "VIA",
"18" : "NAG",
"09" : "NDS",
"0B" : "CON",
"0D" : "CRW",
"4A" : "DRE" }

self.poll_interval = 2000
self.poll_enabled = True

@cached
def get_caidlist(self):
caidlist = {}
service = self.source.service
if service:
info = service and service.info()
if info:
caids = info.getInfoObject(iServiceInformation.sCAIDs)
if caids:
for cs in self.systemCaids:
caidlist[cs] = (self.systemCaids.get(cs),0)

for caid in caids:
c = "%x" % int(caid)
if len(c) == 3:
c = "0%s" % c
c = c[:2].upper()
if self.systemCaids.has_key(c):
caidlist[c] = (self.systemCaids.get(c),1)

ecm_info = self.ecmfile()
if ecm_info:
emu_caid = ecm_info.get("caid", "")
if emu_caid and emu_caid != "0x000":
c = emu_caid.lstrip("0x")
if len(c) == 3:
c = "0%s" % c
c = c[:2].upper()
caidlist[c] = (self.systemCaids.get(c),2)
return caidlist

getCaidlist = property(get_caidlist)

@cached
def getText(self):
textvalue = ""
service = self.source.service
if service:
info = service and service.info()
if info:
if info.getInfoObject(iServiceInformation.sCAIDs):
ecm_info = self.ecmfile()
if ecm_info:
# caid
caid = ecm_info.get("caid", "")
caid = caid.lstrip("0x")
caid = caid.upper()
caid = caid.zfill(4)
caid = "CAID: %s" % caid
# hops
hops = ecm_info.get("hops", None)
hops = "HOPS: %s" % hops
# ecm time
ecm_time = ecm_info.get("ecm time", None)
if ecm_time:
if "msec" in ecm_time:
ecm_time = "ECM: %s " % ecm_time
else:
ecm_time = "ECM: %s s" % ecm_time
# address
address = ecm_info.get("address", "")
# source
using = ecm_info.get("using", "")
if using:
if using == "emu":
textvalue = "(EMU) %s - %s" % (caid, ecm_time)
elif using == "CCcam-s2s":
textvalue = "(NET) %s - %s - %s - %s" % (caid, address, hops, ecm_time)
else:
textvalue = "%s - %s - %s - %s" % (caid, address, hops, ecm_time)
else:
# mgcamd
source = ecm_info.get("source", None)
if source:
if source == "emu":
textvalue = "(EMU) %s" % (caid)
else:
textvalue = "%s - %s - %s" % (caid, source, ecm_time)
# oscam
oscsource = ecm_info.get("from", None)
if oscsource:
textvalue = "%s - %s - %s - %s" % (caid, oscsource, hops, ecm_time)
# gbox
decode = ecm_info.get("decode", None)
if decode:
if decode == "Internal":
textvalue = "(EMU) %s" % (caid)
else:
textvalue = "%s - %s" % (caid, decode)

return textvalue

text = property(getText)

def ecmfile(self):
ecm = None
info = {}
service = self.source.service
if service:
frontendInfo = service.frontendInfo()
if frontendInfo:
try:
ecmpath = "/tmp/ecm%s.info" % frontendInfo.getAll(False).get("tuner_number")
ecm = open(ecmpath, "rb").readlines()
except:
try:
ecm = open("/tmp/ecm.info", "rb").readlines()
except: pass
if ecm:
for line in ecm:
x = line.lower().find("msec")
if x != -1:
info["ecm time"] = line[0:x+4]
else:
item = line.split(":", 1)
if len(item) > 1:
info[item[0].strip().lower()] = item[1].strip()
else:
if not info.has_key("caid"):
x = line.lower().find("caid")
if x != -1:
y = line.find(",")
if y != -1:
info["caid"] = line[x+5:y]

return info

def changed(self, what):
if (what[0] == self.CHANGED_SPECIFIC and what[1] == iPlayableService.evUpdatedInfo) or what[0] == self.CHANGED_POLL:
Converter.changed(self, what)
/usr/lib/enigma2/python/Components/Renderer/RendCaids.py
from Renderer import Renderer
from enigma import eCanvas, eRect, gFont
from skin import parseColor, parseFont

class RendCaids(Renderer):
GUI_WIDGET = eCanvas

def __init__(self):
Renderer.__init__(self)
self.backgroundColor = parseColor("#ff000000")
self.nocColor = parseColor("#00aaaaaa")
self.emmColor = parseColor("#00aaaaaa")
self.ecmColor = parseColor("#0056c856")
self.font = gFont("Regular", 20)

def pull_updates(self):
if self.instance is None:
return
self.instance.clear(self.backgroundColor)
caidlist = self.source.getCaidlist
if caidlist is None:
return
self.draw(caidlist)

def draw(self, caidlist):
offset = 0
pointSize = self.font.pointSize
for key in caidlist:
if caidlist[key][0]:
if caidlist[key][1] == 0:
foregroundColor = self.nocColor
elif caidlist[key][1] == 1:
foregroundColor = self.emmColor
else:
foregroundColor = self.ecmColor
length = len(caidlist[key][0]) * (pointSize)
self.instance.writeText(eRect(offset, 0, length, pointSize), foregroundColor, self.backgroundColor, self.font, caidlist[key][0], 2)
offset = offset + length

def changed(self, what):
self.pull_updates()

def applySkin(self, desktop, parent):

attribs = [ ]
from enigma import eSize

def parseSize(str):
x, y = str.split(',')
return eSize(int(x), int(y))

for (attrib, value) in self.skinAttributes:
if attrib == "size":
self.instance.setSize(parseSize(value))
attribs.append((attrib,value))
elif attrib == "nocColor":
self.nocColor = parseColor(value)
elif attrib == "emmColor":
self.emmColor = parseColor(value)
elif attrib == "ecmColor":
self.ecmColor = parseColor(value)
elif attrib == "font":
self.font = parseFont(value, ((1,1),(1,1)))
elif attrib == "backgroundColor":
self.backgroundColor = parseColor(value)
self.instance.clear(self.backgroundColor)
attribs.append((attrib,value))
else:
attribs.append((attrib,value))
self.skinAttributes = attribs
return Renderer.applySkin(self, desktop, parent)
Эти модули с спутникового ресивера на enigma2
Выводят информацию в инфобары в виде строки с кодировками

<widget  source="session.CurrentService" render="RendCaids" backgroundColor="transparent2" ecmColor="green" emmColor="yellow" font="Regular;14" nocColor="grey" position="630,589" size="437,16" transparent="1" zPosition="10" alphatest="blend">
<convert type="CaidDisplay">Default</convert>
</widget>
Нужно убрать пробелы между названиями кодировок, чтобы буквы были слитно для экономии места, показано красными стрелками, самостоятельно у меня не получилось поэтому прошу помощи у спецов

Базы данных » cx_Oracle для python 2.7.2 и Oracle 9.2 » Дек. 27, 2011 07:48:43

Добрый день!

Подскажите, существует ли указ. вариант? Какая версия будет работать?

Python для новичков » помогите, пожалуйста, с кодировкой! » Дек. 25, 2011 18:31:07

я новичок, работал в pyscripter.
кнопки “сохранить все” и просто “сохранить” не были доступны.
я нажал “сохранить как” и сохранил код под исходным именем.
закрыл, после открытия получил
myquery=input('введите запрос')                     #принял строку
ost=[['Р–СѓРєРѕРІСЃРєРѕРіРѕ'],['Технический университет', 'Р В&#732;РГТУ', 'Политех'],['Школа РњР’Р”', 'Пожарка', 'Пожарное'],['Гос. университет'],['Школа в„–19', 'Школа 19', 'Р вЂ&#732;ольница АкадеРС&#732;РіРѕСЂРѕРґРєР°'],['АкадеРС&#732;РіРѕСЂРѕРґРѕРє', 'АкадеРС&#732;'],['РњРёРєСЂРѕС…РёСЂСѓСЂРіРёСЏ глаза', 'РњРёРєСЂРѕС…РёСЂСѓСЂРіРёСЏ', 'Р СљР СњР СћР С™', 'РџРѕРС&#732;яловского'],['РїРѕСЃ. Энергетиков', 'Энергетиков '],['Южная'],['Студия РєРёРЅРѕС…СЂРѕРЅРёРєРё', 'РљРёРЅРѕС…СЂРѕРЅРёРєР°', 'ДоРС&#732; РљРёРЅРѕ '],['РњСѓС…РёРЅРѕР№'],['Управление ГЭС', 'ГЭС'],['Плотина ГЭС', 'Плотина'],['Релейный завод'],['Р С&#732;-РѕРЅ Р вЂ&#732;айкальский', 'Р вЂ&#732;айкальский'],['Лисиха'],['ЦиРС&#732;лянская'],['Волжская'],['Диагностический центр', 'Р вЂ&#732;аргузин'],['Трилиссера'],['Театр РєСѓРєРѕР»'],['ЦПКиО', 'Парк культуры'],['ФиларРС&#732;РѕРЅРёСЏ', 'Ленина'],['Художественный Р С&#732;узей', 'Художественный'],['Сквер РљРёСЂРѕРІР°', 'Сквер', 'РљРёСЂРѕРІР°'],['Р С&#732;-РѕРЅ Университетский', 'Университетский'],['Школа в„–28', 'Школа 28'],['СтоРС&#732;атологическая клиника', 'СтоРС&#732;атология'],['Южная проходная', 'проходная'],['Мельниковский рынок', 'ДжеРС&#732; Молл', 'ДжеРС&#732;Р С&#732;олл'],['Центральный рынок'],['Р–СѓРєРѕРІР°'],['Площадь Надежды']] #Р вЂ&#732;Р” Р Р† РїР°РС&#732;яти
mar=['1','2','3','7','7Р С”','10','10Р С”']
output=[5 for x in range(33)]
#Разбивка на слова запроса-------------------------------------------------
lastspace=-1
words=[]
for i in range(len(myquery)):
if myquery[i]==' ':
newword=myquery[lastspace+1:i]
words.append(newword)
lastspace=i
words.append(myquery[lastspace+1:])
ewa=words.count('') #empty words amount
print(ewa)
for i in range(ewa): #при чтении возникают пустые слова, я не разбирался, а просто решил удалить
words.remove('')
#Конец разбивки на слова запроса-------------------------------------------
#Разбивка на слова словаря-------------------------------------------------
dicwds=[]
for i in range(len(ost)):
for k in range(len(ost[i])):
lastspace=-1
for l in range(len(ost[i][k])):
if ost[i][k][l]==' ':
newword=ost[i][k][lastspace+1:i]
dicwds.append(newword)
lastspace=i
dicwds.append(ost[i][k][lastspace+1:])
ewa=dicwds.count('') #empty words amount
print(ewa)
for i in range(ewa): #Р С—фСЂРё чтении возникают пустые слова, РЎРЏ Р Р…Р Вµ разбирался, Р В° просто решил удалить
dicwds.remove('')
#Конец разбивки на слова словаря-------------------------------------------

#проверяю на "3"--------------------------------------------------------
for i in range(len(ost)): #для каждого пункта словаря
for k in range(len(ost[i])): #для каждого варианта из этого пункта
for l in range(len(ost[i][k])): #для каждого слова из этого варианта
if len(ost[i][k])>=3: #если это слово Р Р…Р Вµ короче 3 СЃРёРС&#732;волов,
substring=' '+str(ost[i][k])[:3] #РІРѕР·СЊРС&#732;РµРС&#732; подстроку РёР· первых трех Р±СѓРєРѕРІ этого слова Р С‘ пробела перед РЅРёРС&#732;Р С‘
if myquery.count(substring)>0: #если эта подстрока есть в запросе, то у какого-то слова первые 3 буквы совпали,
output[i]=3 #РїСЂРёСЃРІРѕРёРС&#732; этоРС&#732;РЎС“ варианту "3"

#проверяю на "2"--------------------------------------------------------

for i in range(len(ost)): #для каждого пункта(id) словаря
for k in range(len(ost[i])): #для каждого варианта из этого пункта
for l in range(len(ost[i][k])): #для каждого слова из этого варианта
if words.count(ost[i][k][l])>0: #если это слово попадается в запросе,
output[i]=2 #РїСЂРёСЃРІРѕРёРС&#732; этой остановке "2" Р Т‘Р С• проверки Р Р…Р В° полное совпадение
#проверяю на "1"--------------------------------------------------------
for i in range(len(ost)): #для каждого пункта(id) словаря
for k in range(len(ost[i])): #для каждого варианта из этого пункта
if myquery.count(ost[i][k])>=1: #если этот вариант целикоРС&#732; хоть раз встречается Р Р† запросе,
output[i]=1 #то любое РґСЂСѓРіРѕРµ значение output Р С&#732;еняется Р Р…Р В° 1

for i in range(33):
print(output[i])
куда мне это переводить теперь?
как сделать, чтобы такое не повторилось?

Python для новичков » Проблема: иногда не полностью открывается страница » Дек. 22, 2011 21:51:46

У меня проблема с сайтом yestоskiing.ru (набирать ручками). Иногда не открываются страницы полностью, просто шапка вываливается и все. При f5 страница вылазит полностью. От браузера не зависит, проверял. Сам не программист, выявить проблему не могу, старый прогер найти проблему не смог.

Может кто знает, это проблемы с кодом, базой, кешированием и т.п.? Может это бага известная и лечится на “ура”?
Буду рад советам.

ps Кстати, на пост. поддержку требуется программист. Ближайшие работы повесить новый дизайн и модуль бронирования. Много денег не обещаю, но постоянство точно могу обеспечить.

Python для новичков » Урезка не нужного функционала в mailman » Дек. 22, 2011 09:51:03

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

Django » Помощь с парсингом xls ->mysql » Дек. 21, 2011 18:11:54

Доброго времени суток. Проблема заключается в следующем. На хостинге ограничения по процессорному времени на обработку скриптов и на нагрузку на БД. Поэтому над парсером пришлось извращаться. В атрибуте cur переменной NOW хранится кол-во спарсенных строк с файла ексель. Каждый раз скрипт пытается спарсить очередных 100 строк, затем обновляет значение в NOW и делает редирект на самого себя, пытаясь парсить далее. Кто не понял, редиректю для того, чтоб каждый вызов скрипта уложить в отведенное ограничение по процессорному времени и нагрузке на БД. В конечном итоге получаю БД с недопарсенными парою сотней строк, причем каждый раз кол-во варьируется. У кого-нибудь есть какие-либо идеи, предложения? буду рад любой помощи. Спасибо.

def parser(request):
if len(Index.objects.all())==0:
NOW = Index.objects.create(cur=1)
NOW = Index.objects.latest('id')
book = xlrd.open_workbook("avto.xls")
sheet = book.sheet_by_index(0)
if NOW.cur == 1:
from django.core.management import call_command
call_command('reset','filters', interactive=False)
cursor = connection.cursor()
cursor.execute("ALTER TABLE data_startinfo.filters_car AUTO_INCREMENT = 1")
cursor.execute("ALTER TABLE data_startinfo.filters_car_model AUTO_INCREMENT = 1")
cursor.execute("ALTER TABLE data_startinfo.filters_detail AUTO_INCREMENT = 1")
cursor.execute("ALTER TABLE data_startinfo.filters_propertie AUTO_INCREMENT = 1")
cursor.execute("ALTER TABLE data_startinfo.filters_minmax AUTO_INCREMENT = 1")


for i in range(NOW.cur,sheet.nrows):

if sheet.cell(i,1).value == "" and sheet.cell(i,2).value == "" :
car=Car(manufacturer=sheet.cell(i,0).value).save()
else:
tocar=Car.objects.latest('id')
car_model=Car_model(car=tocar,model=sheet.cell(i,0).value).save()
if sheet.cell(i,4).value !="":
tomodel=Car_model.objects.latest('id')
generator=Detail(car=tocar, model=tomodel, article=sheet.cell(i,1).value, more_info=sheet.cell(i,2).value, type=sheet.cell(0,4).value).save()
todetail=Detail.objects.latest('id')
Propertie( detail=todetail,
year=sheet.cell(i,3).value,
name=sheet.cell(i,4).value,
voltage=int(sheet.cell(i,5).value),
amperage=int(sheet.cell(i,6).value),
wholesale_price = str(str(sheet.cell(i,7).value)),
retail_price = str(sheet.cell(i,8).value),
).save()
if sheet.cell(i,10).value!="":
tomodel=Car_model.objects.latest('id')
starter=Detail(car=tocar, model=tomodel, article=sheet.cell(i,1).value, more_info=sheet.cell(i,2).value, type=sheet.cell(0,10).value).save()
todetail=Detail.objects.latest('id')
Propertie( detail=todetail,
year=sheet.cell(i,9).value,
name=sheet.cell(i,10).value,
voltage=int(sheet.cell(i,11).value),
amperage=int(sheet.cell(i,12).value),
wholesale_price = str(sheet.cell(i,13).value),
retail_price = str(sheet.cell(i,14).value),
).save()
if (i-NOW.cur)==100:
NOW.cur = int(i)
NOW.save()
return HttpResponseRedirect("/parser")
NOW.cur = 1
NOW.save()

return HttpResponseRedirect("/")

Python для новичков » пожалуйста подскажите » Дек. 20, 2011 18:13:26

я пишу браузер на питоне с помощью pyqt
возникла проблема: я вывожу код страницы в textedit , но не могу сделать так, чтобы по клику по ссылке(выделена синим), встречающуюся в коде, он мне показывал код этой страницы

Python для новичков » пожалуйста подскажите » Дек. 20, 2011 16:22:08

я пишу браузер на питоне с помощью pyqt
возникла проблема: я вывожу код страницы в textedit , но не могу сделать так, чтобы по клику по ссылке(выделена синим), встречающуюся в коде, он мне показывал код этой страницы

Центр помощи » помогите с курсовой » Дек. 20, 2011 14:22:03

Необходимо создать пакет программ дискретного и целочисленного программирования, а именно реализовать 3 метода
1. метод Гомори
2. метод веток и границ
3. метод Ленд и Дойг
помогите, очень нужно.
зарание спасибо

Флейм » Ищу программиста Python » Дек. 19, 2011 22:42:11

Требуется программист Python + Django для конкретных задач, а именно
1. Автоматизация процессов на базе Selenium, либо другими альтернативными методами.
2. Написание website парсеров.
3. Создание пользовательский панелей.
Проектов несколько. Работа удаленная, но возможно с з.п. каждый месяц. Бюджет от 500$ за каждый проект.

Стучите. Обсудим.
icq 625286565
jabber aodla@jabber.cz

Python для новичков » Клиент серверное приложение. Нжен совет по организации взаимодействия. » Дек. 19, 2011 13:13:12

Добрый день.

В принципе, приложение уже готово и работает нормально но у меня возникло сомнение в правильности его реализации.

Клиент-серверное приложение. Сервер оформлен в виде демона и работает исключительно на Linux.
Клиент на PyQT и работает только на виндовс. Взаимодействие реализованно через вызов серверных функций доступных через XML.RPC

Клиентская консоль предстовляет из себя что то вроде диспетчера задач(упр. процессами, просмотр нагрузки, и информация о ситеме).

Напрмер:
Нажимаем посмотреть список процессов. Консоль вызывает соответствующую функцию на сервере.
Сервер у себя выполняет стандартную команду линух ps aux и весь результат в виде строки возвращает клиенту.
Клиент эту строку парсит и заполняет данными соответствующую табличку в консоле.

Все это работает. Но текстовый обмен и сложный парсинг вывода каждой команды кажется мне слишком сложным и требующим кучи проверок на каждой Линукс ситеме т.к. в некоторых версиях вывод стандартных команд оболочки отличается.

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

Python для новичков » Клиент серверное приложение. Нжен совет по организации взаимодействия. » Дек. 19, 2011 12:17:35

Добрый день.

В принципе, приложение уже готово и работает нормально но у меня возникло сомнение в правильности его реализации.

Клиент-серверное приложение. Сервер оформлен в виде демона и работает исключительно на Linux.
Клиент на PyQT и работает только на виндовс. Взаимодействие реализованно через вызов серверных функций доступных через XML.RPC

Клиентская консоль предстовляет из себя что то вроде диспетчера задач(упр. процессами, просмотр нагрузки, и информация о ситеме).

Напрмер:
Нажимаем посмотреть список процессов. Консоль вызывает соответствующую функцию на сервере.
Сервер у себя выполняет стандартную команду линух ps aux и весь результат в виде строки возвращает клиенту.
Клиент эту строку парсит и заполняет данными соответствующую табличку в консоле.

Все это работает. Но текстовый обмен и сложный парсинг вывода каждой команды кажется мне слишком сложным и требующим кучи проверок на каждой Линукс ситеме т.к. в некоторых версиях вывод стандартных команд оболочки отличается.

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

Python для новичков » Передача данных в метод класса » Дек. 16, 2011 15:01:09

Добрый день! Я в Пайтоне 3 день, прошу не судить строго. Волей судьбы :) пришлось обратится к этому языку.
Итак суть: Работаю с API для хостинг панели DirectAdmin, не выходит передать перменную методу класса.

Метод класса выглядит так:
def get_user_limits(self, user):
"""Get User Limits

Implements command CMD_API_SHOW_USER_CONFIG

Returns a dictionary with the user's upper limits
and settings that defines their account

Method info: http://www.directadmin.com/api.html#info
"""
return self._execute_cmd("CMD_API_SHOW_USER_CONFIG", \
[('user', user)])
для вывода списка обращаюсь так:
#!/usr/local/bin/python2.7
import directadmin
u = "someuser"
api = directadmin.Api("admin", "Somepwd", "example.com", 2222)
user_config = api.get_user_limits(u)
print user_config
На выходе получаю вот это: ):
File "./test.py", line 23, in <module>
user_config = api.get_user_limits(u)
File "/usr/local/lib/python2.7/site-packages/directadmin/api.py", line 948, in get_user_limits
[('user', user)])
File "/usr/local/lib/python2.7/site-packages/directadmin/api.py", line 624, in _execute_cmd
return self._connector.execute(cmd, parameters, get)
File "/usr/local/lib/python2.7/site-packages/directadmin/api.py", line 512, in execute
return self._handle_response(urllib2.urlopen(request))
File "/usr/local/lib/python2.7/site-packages/directadmin/api.py", line 575, in _handle_response
raise ApiError(response['details'][0])
directadmin.api.ApiError: no container class for data
Что я делаю не так?

GUI » PyGTK редактирование ячеек в таблице » Дек. 16, 2011 08:58:21

Имеется таблица с моделью описанная следующим образом :
   self.lst=gtk.ListStore(int,str,str,int,float)
self.grid=gtk.TreeView(self.lst)
renderText=gtk.CellRendererText()
renderText.set_property( 'editable', True )
renderText.connect('edited',self.__edit_col,self.lst)
cell=gtk.TreeViewColumn('PLU',renderText,text=0)
self.grid.append_column(cell)
cell=gtk.TreeViewColumn('Штрихкод',renderText,text=1)
self.grid.append_column(cell)
cell=gtk.TreeViewColumn('Наименование',renderText,text=2,editable=2)
self.grid.append_column(cell)
cell=gtk.TreeViewColumn('Группа',renderText,text=3)
self.grid.append_column(cell)
cell=gtk.TreeViewColumn('Цена',renderText,text=4)
self.grid.append_column(cell)
Функция обработки редактирования одна для всех колонок и описана она следующим образом :
	def __edit_col(self,cell,path,new_text,model):
model[path][2]=new_text # для проверки работы изменяем 3 столбец
return
Вопрос : как определить номер колонки ?
Добавить идентификатор в renderText.connect('edited',self.__edit_col,self.lst) и устанавливать обработчик для каждой ячейки можно но хотелось бы через один обработчик.