PDA

Просмотр полной версии : [Python] вопрос/ответ.


Страницы : [1] 2 3

De-visible
21.01.2009, 02:53
Для тех кто собирается начать программировать на Python.

Софт
Интерпретатор Python(качать Python x.x.x Windows installer, где x.x.x - версия)
Ссылка: http://python.org/download/
Среда eclipse: (качать Eclipse Classic)
Ссылка: http://www.eclipse.org/downloads/
На эту среду надо будет поставить плагин для Python, Pydev
ссылка на него: http://sourceforge.net/project/showfiles.php?group_id=85796
Первый раз запускать с ключом коммандной строки -clean(дописать в ярлычок, после запуска убрать)
Книги
Язык программирования Python. Г.Россум, Ф.Л.Дж.Дрейк, Д.С.Откидач и др.
Ссылка: http://nerezus.ifolder.ru/7768594
Язык программирования Python. Сузи Р.А.
Ссылка: http://nerezus.ifolder.ru/7768667

Полезные ресурсы:

Python WIKI: http://ru.pywiki.com/
Wiki Python: http://ru.wikipedia.org/wiki/Python
Поисковик для Python: http://www.google.com/coop/cse?cx=009415166068715484302:5o_xkxqckma
Русскоязычный сайт по Python: http://www.python.ru/
Официальный сайт по Python: http://www.python.org/
Также можно использовать эти поисковики:
http://www.codenet.ru/
http://www.koders.com/
http://code.google.com/intl/ru-RU/

Python Library: http://docs.python.org/library/index.html

login999
21.01.2009, 09:01
Python FAQ
Итак, интерпретатор CPython (стандарт Де Факто):

http://python.org/download/
Python 2.* - это последние версии интерпретатора второй ветки
Python 3.* - это последние версии интерпретатора третьей ветки

Внимание! Третья ветка несовместима со второй
Практически все сторонние модули в данный момент написаны для второй ветки Python.

Стандартная библиотека для второй ветки Python :http://docs.python.org/2.6/modindex.html

Стандартная библиотека для третьей ветки Python :http://docs.python.org/3.1/modindex.html

Стандартная библиотека к изучению обязательна, таким образом вы будете задавать намного меньше тупорылых вопросов =/
Фреймворки :
---Web :
Django - мощный фреймворк для разработки веб-приложений (http://www.djangoproject.com)
Pylons - "лёгкий" фреймворк для веб-программирования (http://pylonshq.com/)
TurboGears - мощный фреймворк для веб-программирования (http://www.turbogears.org/)
Zope - мощный фреймворк для веб-программирования, очень мощный (http://www.zope.org/)

---Network:
Twisted - сетевой фреймворк для асинхронного программирования (http://twistedmatrix.com/trac/)

---Gui :
PyGTK - фреймворк для разработки Gui, привязка к GTK+ (http://www.pygtk.org/)
PyQt - фреймворк для разработки Gui, привязка к Qt (http://www.riverbankcomputing.co.uk/software/pyqt/)
wxPython - фреймворк для разработки Gui, привязка к wxWidgets (http://wxpython.org/)

Литература :

По русски :
http://ru.wikibooks.org/wiki/Учебник_Python_2.6 - Перевод туториала, написанного автором языка
Книга от Сузи Р.А. (http://www.intuit.ru/department/pl/python/)
Перевод Djangobook (http://djbook.ru/)

По английски :
Dive into python 3 (http://diveintopython3.org/)
Книга по Django (http://www.djangobook.com/)

Разная литература (http://slav0nic.org.ua/static/books/python/)

http://users.physik.fu-berlin.de/~goerz/refcards/python_refcard.pdf - Памятка по средствам языка

Агрегатор русскоязычных ресурсов Python (http://pyplanet.ru/)

Русскоязычный форум по Python :
http://python.su/forum/

Дальше будут IDE

Chaak
21.01.2009, 09:41
Как в urllib2 cделать, чтобы скрипт не переходил по редиректу?

login999
21.01.2009, 11:05
http://diveintopython.org/http_web_services/redirects.html

А если конкретнее, то :

class SmartRedirectHandler(urllib2.HTTPRedirectHandler):
def http_error_301(self, req, fp, code, msg, headers):
result = urllib2.HTTPRedirectHandler.http_error_301(
self, req, fp, code, msg, headers)
result.status = code
return result

def http_error_302(self, req, fp, code, msg, headers):
result = urllib2.HTTPRedirectHandler.http_error_302(
self, req, fp, code, msg, headers)
result.status = code
return result

Я бы сделал try: except который бы чекал на редирект, а потом, если редиректа нету, то делал бы необходимое
P.S. Подобными задачами никогда не занимался :) Скорее наоборот, так что поконкретнее ничего не скажу, и инет лагает, чтобы нормально проверить :(

login999
21.01.2009, 11:31
А вообще, то лучше было бы попробовать для этого что то типа этого:

redir=urllib2.urlopen("www.someurl.com").geturl()
if "REDIR" in str(redir):
pass
else:
blah-blah-blah

Chaak
21.01.2009, 18:42
Мне требуется авторизоваться на одном сайте, и отловить кукисы.

Вот как сюда прикрутить отловку?
def getPage(url, proxy = "", cookies = "", data = "", referer = "", timeout = 10):
req = urllib2.Request(url, data);

if proxy != "":
req.set_proxy(proxy,"http");

req.add_header("Cookie", cookies);
req.add_header("Referer", referer);
req.add_header("User-Agent","Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5");

try:
res = urllib2.urlopen(req, data, timeout);
except:
return "none";

return res.info();

De-visible
21.01.2009, 20:22
И в чем сложность?

Тяжело просмотреть Set-cookie?

req = urllib2.Request("http://www.google.com/")
f = urllib2.urlopen(req).info()
print f

Chaak
21.01.2009, 20:24
Дык у меня редирект проскакивает, а кукисы не ловит =\\\

De-visible
21.01.2009, 20:38
Дык у меня редирект проскакивает, а кукисы не ловит =\\\
насчет редиректа тебе объяснили выше.

http://mail.python.org/pipermail/python-list/2004-December/296259.html

login999
22.01.2009, 17:27
Вот тебе кусок, где urllib2 хватает кукисы:

import cookielib,urllib,urllib2
cookie = cookielib.CookieJar()
if proxy is not None:
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(c ookie),proxy)
else:
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(c ookie))
urllib2.install_opener(opener)
headers = {"User-Agent" : "Mozilla/4.0 (compatible; MSIE 5.5; WindowsNT)" }
login_info=[
("Login",login),
("Password",password)
]
login_post_data = urllib.urlencode(login_info)
try:
login_request=urllib2.Request("http://www.google.com/", login_post_data, headers)
login_response=str(urllib2.urlopen(login_request). read())

2 Chaak - думаю, по примеру поймешь, что к чему, как отлавливать редирект, я написал выше

De-Visible, это часть того, о чем мы говорили :)

inlanger
22.01.2009, 22:07
Как через ctypes подключить коммуникатор к инету? Пример на си тут:
http://msdn.microsoft.com/en-us/library/aa916370.aspx

login999
22.01.2009, 22:43
Честно сказать -я хз, кроме Бидона нифига не знаю,и не имею никакого представления о С, могу только послать ссылкой на
http://www.ragbag.ru/2007/03/23/python_ctypes_magic/
Что могу сказать - только одно, сначала нужно сам твой пример на С сделать функцией и всунуть его в либу, потом уже пытаться импортировать в Бидон, но это так - предположения

Велемир
25.01.2009, 20:40
def s(a):

print(a)

s("dfgghfh")

Пишет:

print(a)
^
IndentationError: expected an indented block

Че за блок я хз... Делал,как было написано.

gold-goblin
25.01.2009, 21:04
надо отступ перед принт.
получится так:
Def s(a):
print(a)
s("dfgghfh")
(можно и 1 пробел)

Велемир
25.01.2009, 21:23
Терь работает,вот только функция должна выводить всё,что я ей передаю в качестве параметров,а она молчит...

ЗЫ: Кстати,конец у функций в питоне странный какой-то.В РНР там фигурные скобки есть,как и в паскале,а также и в джаваскрипте.Да и замуты зачем-то с изменением строк и передачей их аргументам замутили...оставили бы,как в си или том же РНР.

Велемир
25.01.2009, 22:56
def ga(x,y):
x = 10
y = 10
if (x == y):

s = compare(x,y)
return s

if(x > y):

z = compare(x,y)
return z

if (x < y):

d = compare(x,y)
return d

print(ga(5,2))

Вот,что выдало:

File "C:\Python30\programms\prog1.py", line 7
return s
SyntaxError: 'return' outside function

Я так понял,что интерпретатор решил,что я за пределы функции выкинул return ?Но он же расположенв её *области видимости*.

De-visible
25.01.2009, 23:15
Терь работает,вот только функция должна выводить всё,что я ей передаю в качестве параметров,а она молчит...

ЗЫ: Кстати,конец у функций в питоне странный какой-то.В РНР там фигурные скобки есть,как и в паскале,а также и в джаваскрипте.Да и замуты зачем-то с изменением строк и передачей их аргументам замутили...оставили бы,как в си или том же РНР.
Мне наоборот нравится так как есть, вообщем отступы в питоне играют очень важную роль, и еще заключай свой код в теги [code] исправь в своих постах....

def ga(x,y): x = 10 y = 10 if (x == y): s = compare(x,y) return s if(x > y): z = compare(x,y) return z if (x < y): d = compare(x,y) return d print(ga(5,2)) Вот,что выдало: File "C:\Python30\programms\prog1.py", line 7 return s SyntaxError: 'return' outside function Я так понял,что интерпретатор решил,что я за пределы функции выкинул return ?Но он же расположенв её *области видимости*.

Дело в отступах в первую очередь, где у тебя функция а где сам код проги хз, хрен отличишь.

Если что я пока в асе, стучи помогу.

Велемир
25.01.2009, 23:49
Поставил тэги...Надеюсь,что правильно.


ЗЫ:

Проблему решилИ... Всем спасибо за участие )

Велемир
26.01.2009, 19:24
Опять трабла - в модуле нет ни функции find(),ни lower()...Интерпретатор Python 3.0(последний)+PyScripter(тоже последний).Сам модуль имеется.



import string
a = "sdFgsSDfS"
print(string.lower(a))



Сам резалт:

AttributeError: 'module' object has no attribute 'lower'


Возникает вопрос: Где взять эти функции ?

login999
26.01.2009, 19:50
s="aaaaaaASFG"
s=s.lower()
print s

^^^^^
ПРИМЕР
Для этого не нужно импортировать модуль -эти функции - встроенные
П.С. лучше не юзай python3000 -по нему нет ни доков толковых (на русском)+сам он по себе сырой
Я лично пользуюсь 2.6.1 - и тебе рекомендую

Велемир
26.01.2009, 20:29
Пасип:),буду знать )

Велемир
27.01.2009, 01:47
Народ,а как в Python инициализировать запуск процесса какой-то программый,к примеру,paint или user.zip и получить к нему доступ,если возможно)

login999
27.01.2009, 06:15
http://docs.python.org/library/os.html


os.startfile(path[, operation])

Start a file with its associated application.

When operation is not specified or 'open', this acts like double-clicking the file in Windows Explorer, or giving the file name as an argument to the start command from the interactive command shell: the file is opened with whatever application (if any) its extension is associated.

When another operation is given, it must be a “command verb” that specifies what should be done with the file. Common verbs documented by Microsoft are 'print' and 'edit' (to be used on files) as well as 'explore' and 'find' (to be used on directories).

startfile() returns as soon as the associated application is launched. There is no option to wait for the application to close, and no way to retrieve the application’s exit status. The path parameter is relative to the current directory. If you want to use an absolute path, make sure the first character is not a slash ('/'); the underlying Win32 ShellExecute function doesn’t work if it is. Use the os.path.normpath() function to ensure that the path is properly encoded for Win32. Availability: Windows.


import os
os.startfile("C:\Python26\python.exe")

^^^^^
Пример как запустить программу.
А если ты хочешь, чтобы он тебе еще и нарисовал что-нибудь, то лучше юзай для этих целей AutoIt (http://www.autoitscript.com/autoit3/index.shtml)

faza02
06.02.2009, 10:05
a=['a','b','c','d','e','f','g','h','i','j','k','l','m ','n','o','p','q','r','s','t','u','v','w','x','y', 'z','A','B','C','D','E','F','G','H','I','J','K','L ','M','N','O','P','Q','R','S','T','U','V','W','X', 'Y','Z','1','2','3','4','5','6','7','8','9']
for i in range(len(a)):
print a[i]
как сделать что бы буквы складывались? типо:
aa
ab
ac
ad
...
ba
bb
bc
...
za
zb
потом:
aaa
aab
...
aba
abb
...
zaa
zab
ну и каждый раз по одной букве

Chaak
06.02.2009, 10:20
from __future__ import generators

a = ['a','b','c','d','e','f','g','h','i','j','k','l','m ','n','o','p','q','r','s','t','u','v','w','x','y', 'z',
'A','B','C','D','E','F','G','H','I','J','K','L','M ','N','O','P','Q','R','S','T','U','V','W','X','Y', 'Z',
'1','2','3','4','5','6','7','8','9'
]

def xcombinations(items, n):
if n==0: yield []
else:
for i in xrange(len(items)):
for cc in xcombinations(items[:i]+items[i+1:],n-1):
yield [items[i]]+cc

def xuniqueCombinations(items, n):
if n==0: yield []
else:
for i in xrange(len(items)):
for cc in xuniqueCombinations(items[i+1:],n-1):
yield [items[i]]+cc

def xselections(items, n):
if n==0: yield []
else:
for i in xrange(len(items)):
for ss in xselections(items, n-1):
yield [items[i]]+ss

def xpermutations(items):
return xcombinations(items, len(items))

if __name__=="__main__":
for p in xpermutations(a):
print ''.join(p)

Как-то так

faza02
06.02.2009, 19:59
как подсчитать кол-во строк, например в txt файле?

De-visible
07.02.2009, 19:05
как подсчитать кол-во строк, например в txt файле?


filehandle = open("myfile", 'r')
print len(filehandle.readlines())
filehandle.close()


Filehandle =open ("myfile", 'r')
count = 0
while filehandle.readline ()! = " ":
count = count + 1
print count
Filehandle.close ()

faza02
23.02.2009, 14:08
реально ли, в питоне создать хэш DES, mysql и др.?
md5 и sha1 ненадо.

De-visible
23.02.2009, 16:37
реально ли, в питоне создать хэш DES, mysql и др.?
md5 и sha1 ненадо.
Конечно, и это кстати сделано до нас...

faza02
23.02.2009, 16:44
да, но какими модулями? в хэшлиб не нашел.
если можно, пример.

De-visible
23.02.2009, 16:54
да, но какими модулями? в хэшлиб не нашел.
если можно, пример.
Примеры в гуглах,

http://twhiteman.netfirms.com/des.html
http://mail.python.org/pipermail/python-list/2008-December/520889.html
Вообщем если поискать можно найти.

any.zicky
23.02.2009, 17:33
pyCrypto

faza02
27.02.2009, 20:48
какими модулями считывать хеадеры страниц? лучше с примером.

login999
28.02.2009, 01:10
urllib2.urlopen(request).info()

De-visible
28.02.2009, 21:50
какими модулями считывать хеадеры страниц? лучше с примером.
urllib.urlopen("http:// ...").info

gold-goblin
01.03.2009, 18:37
подскажите почему функция time.clock() возвращает 0.1 сикунды?
хоть в системе (linux) часы идут правельно

eLWAux
01.03.2009, 19:19
http://docs.python.org/library/time.html

>>> from time import gmtime, strftime
>>> strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime())
'Thu, 28 Jun 2001 14:17:15 +0000'

gold-goblin
01.03.2009, 19:22
eLWAux
мне надо именно секунды от 1970 года.
их можно получить командой time.clock() но она возвращает 0.1
питон не может получить время от системы =(

.xs
01.03.2009, 19:27
time.time()
<type 'float'>
На всякий случай:
int(time.time())

ph1l1ster
02.03.2009, 17:35
Помогите установить python-pexpect модуль в винде.

скачиваю - http://pexpect.sourceforge.net/pexpect-2.3.tar.gz

прописываю setup.py install но всё равно не устанавливает.

gold-goblin
02.03.2009, 17:45
прописываю setup.py install но всё равно не устанавливает.
что пишет? в каком каталоге находишься когда пишешь?

ph1l1ster
02.03.2009, 17:56
что пишет? в каком каталоге находишься когда пишешь?

в C:\Python26


setup.py install
running install
running build
running build_py
running install_lib
running install_egg_info
Removing C:\Python26\Lib\site-packages\pexpect-2.3-py2.6.egg-info
Writing C:\Python26\Lib\site-packages\pexpect-2.3-py2.6.egg-info

gold-goblin
03.03.2009, 22:31
это скриптовый язык =) (компиляция возможно под винду)
А так запускать можно 2 кликом по файлу имя.py или через командную строку: находясь в каталоге с файлом python имя.py
или запустить командную строку написать python, и вписать туда код (для люникса работает, под виндой хз)
а так много интересного : http://forum.devisible.ru//forumdisplay.php?f=85

gold-goblin
03.03.2009, 23:08
не компилятор а иремпритатор =)
Тоесть не видет?
попробуй такой код:
a = raw_input("-->")
print 'а равно'+a

De-visible
03.03.2009, 23:15
а иремпритатор =)
не иремпритатор а интерпретатор:)

НУ допустим читаю по книге , вот функция raw_input("Введите число")
Компилятор её в упор не видит :(

Оффтоп не стоит разводить, есть массу маннуалов и учебников, почитай ХОТЬ НЕМНОГО тогда, ты поймешь вообще что и куда писать.

De-visible
04.03.2009, 00:09
В какое окно ты вообще пишешь?
в каком IDE работаешь, вообще что ты делашь то бл...
Я не экстрасенс, где доводы поводы, скрины, объяснения...

gold-goblin
04.03.2009, 00:42
ПИлять что не выполняется? ошибка вылазит или што??????
Куда ты вводишь то что видешь в учебнике???
ты установил питон вообще?

faza02
04.03.2009, 00:58
пишешь код, сохраняешь в .py
вот например
q=raw_input(u'xek: ')
print q
попробуй..
читай исходники, не пиши пока ничего..

faza02
04.03.2009, 01:15
поставь питон 2.6.1

De-visible
04.03.2009, 01:29
Я так и думал :(
я жду пока удалишь все свои посты оффтопа, как и обещано.

blaga
04.03.2009, 06:02
Возможно ли на питоне нормально написать прогу с гуй, что бы запускалась везде как екзе?

С гуй я уже чутка поработал, порисовал а вот насчет перевода в екзе...

faza02
04.03.2009, 09:55
py2exe

nerezus
04.03.2009, 12:29
возможно, способов куча(тот же xenocode)

blaga
04.03.2009, 13:22
Buffalon, просто там различия большие. в 3 ветке много чего поменяли..

gold-goblin
04.03.2009, 15:46
blaga да это возможно.
после написания (с использованием нужной графической библиотеки) скомпилить py2exe

login999
04.03.2009, 16:04
Возможно ли на питоне нормально написать прогу с гуй, что бы запускалась везде как екзе?

С гуй я уже чутка поработал, порисовал а вот насчет перевода в екзе...
НОРМАЛЬНО - невозможно, как вариант через анус - py2exe , но у меня лично с ним толком не сложилось - собрал им скрипт, написанный на стандартных модулях, при написании использовался Python 2.6.1. При запуске на машине без интерпритатора - "Приложение направильно сконфигурировано", или что-то подобное, py2exe фактически цепляет интерпритатор к твоему скрипту, и ты носишь с собой его же с собой, это не компилляция в моём понимании. Напиши подробнее, для каких целей тебе нужно слепить скрипт в екзе.

blaga
04.03.2009, 16:12
login999, нужно вообще. Вот например есть под винду джабер клиент Gajim, так он на питоне написан и ничего. у меня заработал как нужно...

login999
04.03.2009, 17:08
login999, нужно вообще. Вот например есть под винду джабер клиент Gajim, так он на питоне написан и ничего. у меня заработал как нужно...
Если вообще, то
http://sourceforge.net/project/showfiles.php?group_id=15583&package_id=35995
тут py2exe
и
http://python.su/blog/public/2008/09/16/ispolzovanie-modulya-py2exe-/
ман по использованию

De-visible
05.03.2009, 22:03
login999, нужно вообще. Вот например есть под винду джабер клиент Gajim, так он на питоне написан и ничего. у меня заработал как нужно...
байт код не канает?

есть под винду джабер клиент Gajim, так он на питоне написан и ничего. у меня заработал как нужно...
Серьезно??? офффигеееть!111.

nerezus
05.03.2009, 22:22
НОРМАЛЬНО - невозможно Если не получилось у тебя, это не значит, что не получилось у всех =)


Еще пример: blender.org

login999
05.03.2009, 22:51
Если не получилось у тебя, это не значит, что не получилось у всех =)


Еще пример: blender.org
/me неправильно поняли :) под понятием нормально я имел ввиду компилляцию в исполняемый файл, а не в его подобие, коее создает py2exe, так как в том, что он создает лежит интерпритатор питона, и это не компилляция а ее имитация. Вообще, то для скриптовых ЯП имхо компилляция в моем понимании невозможна

А вообще, то фигня это все :)
P.S. А то что у меня не получилось, то это нормально :) Я уже привык, что у меня все только через анус получается.

De-visible
05.03.2009, 23:17
/me неправильно поняли :) под понятием нормально я имел ввиду компилляцию в исполняемый файл, а не в его подобие, коее создает py2exe, так как в том, что он создает лежит интерпритатор питона, и это не компилляция а ее имитация. Вообще, то для скриптовых ЯП имхо компилляция в моем понимании невозможна

А вообще, то фигня это все :)
P.S. А то что у меня не получилось, то это нормально :) Я уже привык, что у меня все только через анус получается.
ыыыы, Анус ступень к совершенсту:D, не получается то, не получается это, а потом почитав доки, поломав голову выходим на истинный путь - это в норме...

Buffalon
09.03.2009, 03:16
Попробовал переконвертировать в .exe с помощью py2exe ,не получилось:(
... .Делал по ману :) Хотя там особого думать не надо :) ,
непонятно куда его распаковывать %) , короче видимо с путями нужно разобраться :)

gold-goblin
09.03.2009, 03:25
Попробовал переконвертировать в .exe с помощью py2exe ,не получилось
... .Делал по ману Хотя там особого думать не надо ,
непонятно куда его распаковывать %) , короче видимо с путями нужно разобраться
С какими путями? что распоковывать?

Djezul
09.03.2009, 13:17
Ребята обьесните мне, с самого порстого, вот в книгах написано(жалко они под старые версии языка) что выводить информацию на экран такой конструкцией print "" вывожу пишет ошибка синтаксиса, питон 3.1. Скопировал с офф сайта print 'hello world'
. Опять ошибка синтаксиса, поэксперементировал при вводе print("") всё работает, так непойму в чем проблемма. И ещё , скажите пожалуйста как правильно пользоваться функцией считывания с клавиатуры raw_input (помоему) А то везде синтаксическая ошибка. заранее спасибо

nerezus
09.03.2009, 13:26
питон 3.1 нету такого ) есть 3.0.1

Используй питон2, питон3 - по сути другой, еще мало модулей под него.

В питон 3 надо писать print("блабла") (со скобками)
Устанавливай питон 2.

.xs
09.03.2009, 13:26
В том проблема, что в 3.х синтаксис другой. Поставь 2.6.1 и не мучайся
Для 2.х: print 'string', для 3.х: print('string')
Для 2.х: raw_input(), для 3.х: input()

Djezul
09.03.2009, 22:04
Поставил 2.6.1 всё норм работает)) Насчёт нету такого , на офф сайте Python 3.1 alpha 1 released ,7 марта релиз был. Теперь такой вопрос , как сделать чтобы переменные выводились в одну строку, или текст потом переменная, а то что то не получается. Пробовал так print 'Чтото рано этому - '.a
а как бы переменная, но не получилось, ошибка синтаксиса))

De-visible
09.03.2009, 23:29
Поставил 2.6.1 всё норм работает)) Насчёт нету такого , на офф сайте Python 3.1 alpha 1 released ,7 марта релиз был. Теперь такой вопрос , как сделать чтобы переменные выводились в одну строку, или текст потом переменная, а то что то не получается. Пробовал так print 'Чтото рано этому - '.a
а как бы переменная, но не получилось, ошибка синтаксиса))
Это те не Пыхопэ, так что:

print "ЧТо лучше ?\n"
f = "какать"
print "Апельсин или ", f

print "ЧТо лучше ?\n"
f = "какать"
print "Апельсин или "+ f

g = """
Что лучше?
Апельсин или какать?
"""
print g



print "(c) De-visible [MegaCoding, 2009]", ":D"

nerezus
09.03.2009, 23:58
знакомая фраза =)

alextoun
12.03.2009, 22:23
самая стабилная серия сейчас это 2.6
в 3-ей серии print уже функция
тоже поначалу поставил, ступарнулся, пошарил и сделал откат обратно до 2.6 :)
тем более ещё 3-я серия очень сырая и мало модулей

login999
13.03.2009, 01:25
самая стабилная серия сейчас это 2.6
в 3-ей серии print уже функция
тоже поначалу поставил, ступарнулся, пошарил и сделал откат обратно до 2.6 :)
тем более ещё 3-я серия очень сырая и мало модулей
Ну в принципе я жду нормального релиза из третьей ветки, больше всего привлекает "Все будет Unicode"(c)
версии выше 2.5 (вроде) считаются переходными от второй ветки к третьей, в принципе мне нравится 2.6 и переходить с него я буду только на стабильный и нормальный релиз из третьей ветки, ну или в случае апгрейда, меня привлекает и устраивает их концепция перехода с двойки на тройку

De-visible
13.03.2009, 02:15
Ну в принципе я жду нормального релиза из третьей ветки, больше всего привлекает "Все будет Unicode"(c)
версии выше 2.5 (вроде) считаются переходными от второй ветки к третьей, в принципе мне нравится 2.6 и переходить с него я буду только на стабильный и нормальный релиз из третьей ветки, ну или в случае апгрейда, меня привлекает и устраивает их концепция перехода с двойки на тройку


с 2.6 на 3 версию, долго еще будем переходить, мне 3 вообще пока не нравиться...
Особенно вот этот ебнутый print ("")
Переходить пока не собираюсь, кстати для 2.6 насколько знаю курла(модуля) до сих пор нет...:(, вообщем я остановлюсь на ближайшие пару лет на версии 2.6, пока имхо лучшая.

De-visible
23.03.2009, 01:48
http://blitz3d.at.ua/index/0-14

инфа к размышлению...

nerezus
25.03.2009, 03:36
http://blitz3d.at.ua/index/0-14 какашко... Eve Online покруче пример =)
Ну или Battlefield'ы или Vampire: The Masquerade – Bloodlines.

jecka3000
01.04.2009, 12:12
решил начать изучать питон..скачал версию 2.6 под винду......Хотел спросить, нельзя программировать не в DOS, может кто то даст нормальный урл на скачку...гугл отказывается помогать)

login999
01.04.2009, 12:20
Ты имеешь ввиду среду ? Ты походу запустил Python command-line :)
Я лично посоветовал бы PyScripter (http://code.google.com/p/pyscripter/downloads/list)
К прочтению : http://ru.wikibooks.org/wiki/Учебник_Python_2.6

jecka3000
01.04.2009, 12:22
спасибо, разобралсо)

_Kris_
01.04.2009, 13:08
Я бы, посоветовал eclipse, с плагином PyDev имхо лучшая...

login999
01.04.2009, 13:12
Я бы, посоветовал eclipse, с плагином PyDev имхо лучшая...

Я бы ее выбрал для серьезных разработок в тысячи строк кода, а вот начинать с нее - имхо не стоит :) Я вообще половину кода пишу в Notepad++ и даже к помощи PyScripter редко прибегаю :)

_Kris_
01.04.2009, 19:28
Я бы ее выбрал для серьезных разработок в тысячи строк кода, а вот начинать с нее - имхо не стоит :) Я вообще половину кода пишу в Notepad++ и даже к помощи PyScripter редко прибегаю :)
Ну мелкие работы я делаю, в ПайСкриптер), начинал с эклипса, и не жалуюсь, она большая но в ней отлаживать одно удовольствие, при написании демок она меня выручала на радость...

jecka3000
01.04.2009, 20:15
Посоветуйте книги для начинающих по питону, посмотрел предыдущие ссылки - но там нужны уже хоть какие то знания в этом языке.
М б кто нить подскажет, где можно почитать с нуля..
заранее благодарен)

login999
01.04.2009, 20:33
Старый, но хороший курс : http://www.intuit.ru/department/pl/python/

KaZ@NoVa
01.04.2009, 20:46
Посоветуйте книги для начинающих по питону, посмотрел предыдущие ссылки - но там нужны уже хоть какие то знания в этом языке.
М б кто нить подскажет, где можно почитать с нуля..
заранее благодарен)
Язык программирования Python Автор: Сузи Роман Арвиевич
В любом языке главное практика.
http://www.pythonchallenge.com/ - Толковый сайт.
После решения задачи не забывай заглядывать в ответы.(ссылочка такая будет внизу).
Большинство трюков и фич узнал именно оттуда.=)
Удачи=)
ЗЫ. Ресурс не на русском, но все равно понятно=)

login999
02.04.2009, 10:16
В любом языке главное практика.
- Толковый сайт.
После решения задачи не забывай заглядывать в ответы.(ссылочка такая будет внизу).
Большинство трюков и фич узнал именно оттуда.=)
Удачи=)
ЗЫ. Ресурс не на русском, но все равно понятно=)
=\ Гуру, если бы ты читал курс от Сузи, то знал бы что моя ссылка на пост выше твоего ведет именно на него =\

KaZ@NoVa
02.04.2009, 10:20
=\ Гуру, если бы ты читал курс от Сузи, то знал бы что моя ссылка на пост выше твоего ведет именно на него =\
Cорри прост не обратил внимание)))Давно читал,(не из инета).

Vid0k
02.04.2009, 10:33
использую threading для создания нитей, приложение сетевое использует pycurl,
после определенного момента падает с надписью Segmetation Fault
пытался дебажить в эклипсе, но чот ни чего не получается,код к сожалению выложить не могу,
мож кто сталкивался с подобным?

login999
02.04.2009, 10:42
использую threading для создания нитей, приложение сетевое использует pycurl,
после определенного момента падает с надписью Segmetation Fault
пытался дебажить в эклипсе, но чот ни чего не получается,код к сожалению выложить не могу,
мож кто сталкивался с подобным?

А обязательно использование PyCurl ?
если нет, то я попробовал бы взять и переписать на стандартных модулях из 2.6.1

ошибки такой никогда не встречал, но я бы посоветовал взять весь блок кода с возможной ошибкой в try except, т.е. сделать так:

try:
'''тут весь блок кода,
на который думается
что он грешен'''
except Exception, e:
print e


Исходя из этого топика :http://python.su/forum/viewtopic.php?id=1555
Это проблема С, т.е. уйди от использования PyCurl

Vid0k
02.04.2009, 10:48
там не точ то место какое то определенное падает, а после выполнения потоками примерно сотого задания оно подает, гуглил буржуи говорят мол ошибка в сишных библиотеках
=====
придется на сокеты переписывать=(

login999
02.04.2009, 11:08
там не точ то место какое то определенное падает, а после выполнения потоками примерно сотого задания оно подает, гуглил буржуи говорят мол ошибка в сишных библиотеках
=====
придется на сокеты переписывать=(

Что, никак без сокетов ? У питона дофига библиотек кстати, можно попробовать хотя бы на httplib сделать, гемора немного меньше будет, только учти что httplib, так же как и все библиотеки выше него не работают с HEAD запросами :(, они тупо виснут. Мне лично например с головой хватает urllib, urllib2, а HTTPCookieProcessor+cookielib вообще рулит в вебе :)
Но если писать брут , то делать нужно это на сокетах, так как только на сокетах можно прочитать ЧАСТЬ header -ов, остальные либы грузят headers полностью, а регулировать можно только чтение body

Vid0k
02.04.2009, 11:13
Что, никак без сокетов ? У питона дофига библиотек кстати, можно попробовать хотя бы на httplib сделать, гемора немного меньше будет, только учти что httplib, так же как и все библиотеки выше него не работают с HEAD запросами :(, они тупо виснут. Мне лично например с головой хватает urllib, urllib2, а HTTPCookieProcessor+cookielib вообще рулит в вебе :)
Но если писать брут , то делать нужно это на сокетах, так как только на сокетах можно прочитать ЧАСТЬ header -ов, остальные либы грузят headers полностью, а регулировать можно только чтение body
в моем случае как раз нужна активная работа с хедерами

_Kris_
02.04.2009, 12:37
Забудте вы про pycurl, во первых он баженный, во вторых сокеты вам для чего даны?

inlanger
02.04.2009, 12:55
я написал пару брутов на twill, советую попробовать. С этой либой очень легко работать.

login999
02.04.2009, 13:02
я написал пару брутов на twill, советую попробовать. С этой либой очень легко работать.

А я принципиально не работаю со стронними модулями :) Из сторонних модулей признаю только веб-фреймворки :). Хотя не исключаю того, что в ближайшем будущем придется заглядеться в сторону Beautiful Soup, но не факт. Сторонние модули они гемора добавляют тому, кто будет ими пользоваться, да и впридачу не все сторонние модули стоят на хостингах :( а заставить хостера поставить что-то нестандартное - задача нелегкая :)

inlanger
02.04.2009, 13:04
Юзайте VDS, или запускайте скрипты со своего компьютера. Потому что использовать сторонние модули иногда оооочень удобно.

login999
02.04.2009, 13:07
Юзайте VDS, или запускайте скрипты со своего компьютера. Потому что использовать сторонние модули иногда оооочень удобно.

Эх, я бы посмотрел что бы ты сказал заказчику, который и слова такого не знает как VDS... :) Ну сторонние модули я бы использовал исключительно для себя :) Потому как действительно есть очень удобные вещи, хотя бы mechanize...

Vid0k
02.04.2009, 13:09
еще одна линка в тему
обсуждение на питоне
http://python.su/forum/viewtopic.php?id=3357
про многопоточные запросы

Vid0k
02.04.2009, 13:57
не пойму где ошибка выдает все время таймоут

import socket
#
HOST = "www.google.ru"

PORT = 80
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((HOST, PORT))
mes = "GET / HTTP/1.1\r\n"
mes += "Host: www.google.ru\r\n"
mes += "User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5\r\n"
mes += "Accept: text/html\r\n"
mes += "Connection: close\r\n"

sock.send("")
result = sock.recv(1024)
sock.close()
print ":", result

inlanger
02.04.2009, 13:57
login999, twill это либа на основе mechanize ;) там ещё всё проще и удобнее

t4Nk
02.04.2009, 14:45
не пойму где ошибка выдает все время таймоут

mes += "Connection: close\r\n\r\n"

sock.send(mes)

Vid0k
02.04.2009, 16:22
mes += "Connection: close\r\n\r\n"

sock.send(mes)
надо пойти поспать=\
но все равно не пашет(

eLWAux
02.04.2009, 16:34
# -*- coding: cp1251 -*-

import sys,socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("www.google.ru", 80))
print '+'

mes = "GET /index.html HTTP/1.1\r\n"\
"Host: www.google.ru\r\n\r\n"

s.send(mes)
result = s.recv(10240)
s.close()
print result
проверил, все работает!

з.ы.: если тебе нужна полностью страница, и не нужен header ответа, используй urllib:
import urllib
page = urllib.urlopen("http://google.ru").read()
print page

Vid0k
02.04.2009, 16:46
спасибо,вот конечный результат забирает всю страницу, а не только первые 1024 байта

# -*- coding: cp1251 -*-

import sys,socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("www.google.ru", 80))
print '+'

mes = "GET / HTTP/1.1\r\n"
mes += "Host: www.google.ru\r\n"
mes += "User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5\r\n"
mes += "Accept: text/html\r\n"
mes += "Connection: close\r\n\r\n"

s.send(mes)
buff = ""
result = ""
while 1:
buff = s.recv(1024)
if buff:
result += buff
else:
break
s.close()
print result

eLWAux
02.04.2009, 16:52
Vid0k, в некоторих случаях твой скрипт будет виснуть.

вот:
def sendit(sock,packet='',timeout=1):
import time
if (packet!=''):
self.sock.send(packet)
self.sock.setblocking(0)
total_data=[]
data=''
begin=time.time()
while 1:
if total_data and time.time()-begin>timeout:
break
elif time.time()-begin>timeout*2:
break
try:
data=self.sock.recv(1024)
if data:
total_data.append(data)
begin=time.time()
else:
time.sleep(0)
except:
pass
return ''.join(total_data)

и испозуеш:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("www.google.ru", 80))
result = sendit(s,"GET / HTTP/1.1\r\nHost: google.ru\r\n\r\n")
print result


з.ы.: повторяюсь, но для получения страници лучше использовать уже готовую urllib

inlanger
02.04.2009, 17:34
Vid0k, с twill твой код будет выглядеть так:

go('http://google.com')
show()

Это - переход на страницу и вывод полученной страницы на экран(а можно и в переменную)

Vid0k
02.04.2009, 17:37
Vid0k, с twill твой код будет выглядеть так:



Это - переход на страницу и вывод полученной страницы на экран(а можно и в переменную)
не спасибо...
я люблю велосипеды...:)

login999
02.04.2009, 17:44
спасибо,вот конечный результат забирает всю страницу, а не только первые 1024 байта

# -*- coding: cp1251 -*-

import sys,socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("www.google.ru", 80))
print '+'

mes = "GET / HTTP/1.1\r\n"
mes += "Host: www.google.ru\r\n"
mes += "User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5\r\n"
mes += "Accept: text/html\r\n"
mes += "Connection: close\r\n\r\n"

s.send(mes)
buff = ""
result = ""
while 1:
buff = s.recv(1024)
if buff:
result += buff
else:
break
s.close()
print result
Честно говоря, я не могу понять, зачем нужно было изьебыватся, чтоб получить страницу именно на сокетах, мне интересно, что ты подразумевал под "Активная работа с заголовками" между прочим, модификацию заголовков я делаю через urllib2, я ж написал, что сокеты целесообразно использовать только в одном случае - если необходимо ПОЛУЧИТЬ ЧАСТЬ заголовка.Примером такого изьебоса я могу считать свой сканнер директорий([NDC] 12 BDS), который получает 12 байт из заголовка и обрывает соединение, в этом случае целесообразно было писать его на сокетах (ИМХО). Во всех остальных случаях я не вижу необходимости юзать сокеты на питоне, отлично справляются и стандартные либы. В качестве исключения могу сказать только то, что над server-side приложениями я не трудился и как они будут себя вести при огромных нагрузках я не знаю, с клиентской частью у мну ни разу никаких напрягов не было. Но в пользу server-side приложений говорят Twisted, Django, Plone, Turbo Gears, и т.д.

login999
02.04.2009, 17:47
Vid0k, с twill твой код будет выглядеть так:



Это - переход на страницу и вывод полученной страницы на экран(а можно и в переменную)

Просто - это не путь тру кодеров, труъ кодеры настолько суровые, что даже веб-приложения пишут на ассемблере

Vid0k
02.04.2009, 18:05
Честно говоря, я не могу понять, зачем нужно было изьебыватся, чтоб получить страницу именно на сокетах, мне интересно, что ты подразумевал под "Активная работа с заголовками" между прочим, модификацию заголовков я делаю через urllib2, я ж написал, что сокеты целесообразно использовать только в одном случае - если необходимо ПОЛУЧИТЬ ЧАСТЬ заголовка.Примером такого изьебоса я могу считать свой сканнер директорий([NDC] 12 BDS), который получает 12 байт из заголовка и обрывает соединение, в этом случае целесообразно было писать его на сокетах (ИМХО). Во всех остальных случаях я не вижу необходимости юзать сокеты на питоне, отлично справляются и стандартные либы.
чо ты так напрягся?!:Dрасслабься, ну захотелось мне!)
нравится тебе твоя урл.либ вот и пиши с ней задоровье

Vid0k
02.04.2009, 18:17
а и еще вопрос
при выводе строки в консоль нужно чтобы она была на месте
в перле и под виндами работало "\r" но под никсами и в питоне все время переводит на новую строчку(
как с этим бороться?
чо придется все время чистить консоль?(

login999
02.04.2009, 18:45
print stroka.replace("\r", "")
можно еще и .replace("\n", "") сделать

cr0w
02.04.2009, 18:55
а и еще вопрос
при выводе строки в консоль нужно чтобы она была на месте
в перле и под виндами работало "\r" но под никсами и в питоне все время переводит на новую строчку(
как с этим бороться?
чо придется все время чистить консоль?(
Наверное, ты пишешь:
print stroka + "\r"
когда надо
print stroka + "\r",

_Kris_
02.04.2009, 21:03
Народ если вы не в теме, просьба не отписываться тут...
Запись с сокетами просто расмешила...
На что вам кортежи и словари даны?, для чего создавались тонкости питона?
Также как и login999 уже сказал, urllib используют для этого, вообще сокеты в питоне, для работы на уровне TCP/IP, а для HTTP, FTP и так далее есть готовые либы, и не стоит изобретать херню...

KaZ@NoVa
02.04.2009, 23:43
использую threading для создания нитей, приложение сетевое использует pycurl,
после определенного момента падает с надписью Segmetation Fault
пытался дебажить в эклипсе, но чот ни чего не получается,код к сожалению выложить не могу,
мож кто сталкивался с подобным?
на самом деле тут часто приколы бывает проще) как то сталкивался, но было это на C.
в общем программу надо запускать из корня, а не из той папки, в которой она лежит. то есть указываем полный путь) ;)

Vilz
07.04.2009, 13:56
Вопрос:Кто что может мне подсказать по поводу цветов текста и шрифтов в программах на питоне.Хочу,например,какую либо фразу сделать в таком же стиле как в программе SmartSIS в главном меню.Знает ли кто про то как представить стандартный текст в питоне в другом виде,т.е. немного его преукрасив?

Vid0k
07.04.2009, 14:00
Вопрос:Кто что может мне подсказать по поводу цветов текста и шрифтов в программах на питоне.Хочу,например,какую либо фразу сделать в таком же стиле как в программе SmartSIS в главном меню.Знает ли кто про то как представить стандартный текст в питоне в другом виде,т.е. немного его преукрасив?
http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html
#! /usr/bin/python

print "\033[34mThis is blue\033[0m"

Vilz
07.04.2009, 14:03
Vid0k спасибо

M.W.N.N.
10.04.2009, 23:59
Народ очень срочно надо, короче встала проблема, я не могу понять как так cделать
Нужно об]явить массив, записать все это в фаил, и найти сумму квадратов N чисел с конца.

login999
11.04.2009, 09:28
А зачем запись в файл ?

a=[] # Обьявляем массив
b = "abcdef" # Строка с данными , которые будут заноситься в массив
for element in b: # Для каждого элемента в b
a.append(element) # Собственно само добавление элемента в массив
with open ("out.txt", "a") as out:# Тут запись в файл, если захочешь :)
for element in a :
out.write(element + "\n")
with open ("out.txt", "a") as inpt:# Так можно заполнить массив из файла, если файл можно прочитать построчно
for element in inpt:
a.append(element[:-1])# Обрати внимание на [:-1]# Это значит, что от каждой строки из файла будет отнят последний символ (обычно это перенос строки, но файл должен заканчиваться пустой строкой !)
last = a.pop() # Так происходит взятие последнего элемента массива, следовательно для N элементов можно сделать так:
for x in xrange(N): #для каждого x в диапазоне N(число, обязательно!)
a.pop(x) #Берем значение из массива c его последующим удалением
print a # Делаем с a то что хотим

P.S. .pop() Берет значение из массива, а потом его удаляет, т.е. после .pop() этого значения в массиве уже не будет, помни об этом
P.P.S. Если бы задача была более конкретно описана, то мог бы посоветовать что-то ближе к практике, а так то это чисто фонарный набор - я лично пользуюсь такими конструкциями постоянно, и для этих действий то нужно хоть немного мануал почитать
P.P.S. а вообще то это элементарная задача =\ За тебя я ее делать не буду

login999
17.04.2009, 17:41
Вышел новый релиз - Python 2.6.2
Подробнее (http://www.python.org/download/releases/2.6.2/NEWS.txt)

inlanger
17.04.2009, 17:55
Хорошо, что 2.6 ветку не забросили. Чего-то мне не очень хочется переходить на 3ку.

messagedb
17.04.2009, 22:48
доброго времени! кто знает напишите мини-статью по связыванию апаче с питоном под вин хр.

eLWAux
17.04.2009, 23:29
http://ithowto.ru/programming/python/kak-ustanovit-python-v-windows-xp/
http://www.opennet.ru/openforum/vsluhforumID8/3177.html

messagedb
18.04.2009, 17:25
http://ithowto.ru/programming/python/kak-ustanovit-python-v-windows-xp/
http://www.opennet.ru/openforum/vsluhforumID8/3177.html
2я сылка +

messagedb
18.04.2009, 17:33
и еще вопрос может ли питон , то что делает пхп?

inlanger
18.04.2009, 17:43
Может, и делает.

De-visible
21.04.2009, 19:12
и еще вопрос может ли питон , то что делает пхп?
вопрос из серии: "Апельсин или какать?", гыгы привет нерезусу))
Не думаю что вообще данные яп можно как то сравнивать, понимаю там perl vs python, но никак не питон с пхп, точно могу сказать, пхп не может многое из того, что может питон)))

messagedb
22.04.2009, 02:05
вопрос из серии: "Апельсин или какать?", гыгы привет нерезусу))
Не думаю что вообще данные яп можно как то сравнивать, понимаю там perl vs python, но никак не питон с пхп, точно могу сказать, пхп не может многое из того, что может питон)))

имелось ввиду возможности python в сторону web по сравнению с php.

De-visible
22.04.2009, 02:59
http://ru.wikipedia.org/wiki/Django
http://wiki.python.org/moin/WebFrameworks
http://wiki.python.org/moin/WebProgramming

Думаю все равно сравнивать глупо...

inlanger
22.04.2009, 22:47
Никто не подскажет, как спрятать программу после её запуска? Чтобы не было видно консоли и программа не висела на панели задач.

login999
22.04.2009, 22:49
меняешь расширение на .pyw - пропадает консоль, и висит только в процессах

gold-goblin
22.04.2009, 22:51
помагает поменять расширение на pyw(вроде так, но не совсем для тебя так как программа продолжет выполнятся после закрытия) или подключить qt4 с пустым виджетом(не проверял, но должно получится)
Логин опередил =) (кстати не всегда пропадает консольое окно =((

login999
22.04.2009, 23:09
помагает поменять расширение на pyw(вроде так, но не совсем для тебя так как программа продолжет выполнятся после закрытия) или подключить qt4 с пустым виджетом(не проверял, но должно получится)
Логин опередил =) (кстати не всегда пропадает консольое окно =((
У мну всегда пропадает :) забыл добавить, что эта фишка кажись только под винду

gold-goblin
22.04.2009, 23:19
забыл добавить, что эта фишка кажись только под винду
Да =) на винде работает, на никсах (убунту, сусе) окно приходится закрывать

inlanger
22.04.2009, 23:25
Блин, надо было попробовать ) Я думал оно только консоль прячет, а оно и с панели задач убирает.

nerezus
23.04.2009, 00:40
На никсах и так консоль не вылазиет ;)
Так чтот w не надо.

inlanger
08.05.2009, 17:37
а можно на питоне работать с remote desctop connection? если да, то как?

messagedb
09.05.2009, 03:38
"Освой самостоятельно Python за 24 часа" Иван ван Лейнингем.

>> может кто перегонит в chm формат << (http://www.fantom-lab.narod.ru/Python/LerningNoName/IndexNoName.html)

De-visible
09.05.2009, 04:51
а можно на питоне работать с remote desctop connection? если да, то как?
API :), модуль ctypes в помощь...

inlanger
09.05.2009, 11:47
Я думал будут способы "не через жопу"

De-visible
09.05.2009, 12:37
Я думал будут способы "не через жопу"
Гыгыгы))), ну они наверняка есть)

nerezus
10.05.2009, 12:30
имелось ввиду возможности python в сторону web по сравнению с php. Они выше. Тот же самый django глянь.

iv.
18.05.2009, 09:51
у меня есть список, в котором некоторые элементы повторяются
есть ли какая функция для создания списка без дублей или же модификации исходного?

login999
18.05.2009, 10:35
у меня есть список, в котором некоторые элементы повторяются
есть ли какая функция для создания списка без дублей или же модификации исходного?
a = [1,2,3,4,5,6,2,2,3,3,4,4]
b= set(a)
print b

Gifts
18.05.2009, 11:07
Помогите, cookielib почему-то не принимает все куки.

Есть такой код def request(self, host, handler, request_body, verbose=0):
# dummy request class for extracting cookies
class CookieRequest(urllib2.Request):
pass

# dummy response class for extracting cookies
class CookieResponse:
def __init__(self, headers):
self.headers = headers
def info(self):
return self.headers
verbose = 0
crequest = CookieRequest('https://'+host+'/')

# issue XML-RPC request
h = self.make_connection(host)
if verbose:
h.set_debuglevel(1)

self.send_request(h, handler, request_body)
self.send_host(h, host)
self.send_user_agent(h)

# creating a cookie jar for my cookies
cj = cookielib.LWPCookieJar()

self.send_content(h, request_body)

errcode, errmsg, headers = h.getreply()
print str(headers)
cresponse = CookieResponse(headers)
cj.extract_cookies(cresponse, crequest)

if len(cj) >0 and self.cookiefile != None:
cj.save(self.cookiefile)

if errcode != 200:
raise xmlrpclib.ProtocolError(
host + handler,
errcode, errmsg,
headers
)

self.verbose = verbose

try:
sock = h._conn.sock
except AttributeError:
sock = None

return self._parse_response(h.getfile(), sock)


Приходящие заголовки выглядят так:Server: nginx/0.6.32
Date: Mon, 18 May 2009 06:59:05 GMT
Content-Type: text/xml; charset=utf-8
Connection: close
Set-Cookie: SAPE=tra-ta-ta; path=/; domain=.sape.ru
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: p=a8de899da4; expires=Tue, 18-May-2010 06:59:02 GMT; path=/; domain=.sape.ru

Суть - сохраняет только куку "p", но не "SAPE" возможно из-за отсутствия аттрибута expires. Как настроить, чтобы сохранялись все куки?

login999
18.05.2009, 11:35
Попробуй такой вариант:

import urllib2
import cookielib

cookies = cookielib.CookieJar()
proxy_handler = urllib2.ProxyHandler({"http":"10.10.10.10:3128"})
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(c ookies), proxy_handler,)
urllib2.install_opener(opener)
temp_headers = urllib2.urlopen("www.sape.ru").info()
print cookies

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

Gifts
18.05.2009, 13:04
login999 Спасибо, но не то, это функция из класса для транспорта XMLRPC

Проблема оказалась проста. cookiejar.save не сохранял expired куки, там специальный флаг для этого

presidentua
22.05.2009, 15:52
недавно посетила мысль о том что понемногу заменить PyCurl на стандартные библиотеки.

И тут возникли два вопроса, что пока не смог решить:
Как запустить запрос через Socks4/5
Как запустить запрос по https

nerezus
22.05.2009, 16:08
urllib2 для http проксей, куков и т.д.
для сокс свой openner написать, там не слишком сложно.
Кстати как напишешь - плз выложи, интересно.

login999
22.05.2009, 16:20
PyCurl - выбросить нафик, ибо это:
1. PHP -подход к Python
2. Глючность , если внимательно погуглишь на тему вот этого поста (http://forum.antichat.ru/showpost.php?p=1203599&postcount=87) то увидишь что это сишная ошибка, вылазила эта гадость при использовании pyCurl

Socks4/Socks5 - SocksiPy (http://socksipy.sourceforge.net/)
https через Urllib2 без проблем открывается, никаких шаманств не нужно, правда нету handler для работы с https через прокси - придется что-то выдумывать на эту тему , на activestate есть пример кстати

P.S. Народ подскажите как НОРМАЛЬНО реализовать такую вот цацку:


def Counter(Count=[0,]):
Count.append(Count[0]+1)
del Count[0]
return Count[0]

она то делает все что мне нужно - запоминает показания счетчика, только мну считает что юзать список ради этого дела некошерно, хотелось бы ФУНКЦИЮ, и чтоб он запоминала именно int
делать переменную не проканает так как я заипусь потом прописывать global Counter везде где мне нужно будет его изменить, а global в функциях есть некошерно

presidentua
22.05.2009, 16:40
urllib2 для http проксей, куков и т.д.
для сокс свой openner написать, там не слишком сложно.
Кстати как напишешь - плз выложи, интересно.

Хотелось бы стандартными средствами... Если использовать сторонние библиотеки, то нашел
http://socksipy.sourceforge.net/ , типа работа как с сокетами, только через сокс, если все работает, то достаточно интересно.
А если самому реализовывать, то интересно посмотреть на этот исходник:
http://www.koders.com/python/fidE472F1B0D8A02578C8960D2A1648A8D6049C6A40.aspx?s =icq#L114

Ну тогда при моих интересах в принципе рано уходить от PyCurl, но правда меня смущает тот факт(как бы поэтому я и решил посмотреть что есть по данному вопросу) что нету версии PyCurl для Windows для версии 2.6.

Хотя пока не собираюсь переходить на 2.6, ведь PyGame с которым активно играюсь пока что рекомендует 2.5... Но тенденция развития PyCurl не очень нравится (

login999
22.05.2009, 16:47
Хотелось бы стандартными средствами... Если использовать сторонние библиотеки, то нашел
http://socksipy.sourceforge.net/ , типа работа как с сокетами, только через сокс, если все работает, то достаточно интересно.
А если самому реализовывать, то интересно посмотреть на этот исходник:
http://www.koders.com/python/fidE472F1B0D8A02578C8960D2A1648A8D6049C6A40.aspx?s =icq#L114

Ну тогда при моих интересах в принципе рано уходить от PyCurl, но правда меня смущает тот факт(как бы поэтому я и решил посмотреть что есть по данному вопросу) что нету версии PyCurl для Windows для версии 2.6.

Хотя пока не собираюсь переходить на 2.6, ведь PyGame с которым активно играюсь пока что рекомендует 2.5... Но тенденция развития PyCurl не очень нравится (
ыыы глянь на пост выше :)

presidentua
22.05.2009, 17:33
ыыы глянь на пост выше :)

блин! Не увидел, на новую страницу все перебросило, а я пропустил твой пост. Спасибо! Посмотрю!

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

presidentua
22.05.2009, 17:48
def Counter(Count=[0,]):
Count.append(Count[0]+1)
del Count[0]
return Count[0]
А если так, тоесть глобальная переменная конечно есть, но одна в одном месте ):

a = 0
def add():
global a
a+=1
return a

print add()
print add()

login999
22.05.2009, 17:50
блин! Не увидел, на новую страницу все перебросило, а я пропустил твой пост. Спасибо! Посмотрю!

По поводу Курла не согласен что это ПХП подход. Курл такая же библиотека как и другие, и если она используется в многих языках - это не делает ее ПХП-шной )
Не совсем так, правильнее наверное будет сказать, что ее реализация есть под многие ЯП..., а вот пользуются ей в основной массе те, кто начал работать с PHP, а потом переходит на другие ЯП и ищут те инструменты, которыми привыкли пользоваться, на нынешней стадии развития питона(я имею ввиду 2,6,2), то единственное чего он не умеет и что поддерживает курл-это работа через соксы
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Моя ИМХА, не претендую на абсолютную правоту

login999
22.05.2009, 17:55
def Counter(Count=[0,]):
Count.append(Count[0]+1)
del Count[0]
return Count[0]
А если так, тоесть глобальная переменная конечно есть, но одна в одном месте ):

a = 0
def add():
global a
a+=1
return a

print add()
print add()


Незачет - а теперь представь, что у меня 20 функций, которым нужно получение счетчика, причем все это чудо многопоточное и пиздючит ну допустим в 50 потоков... в эту функцию например не нужно даже локов встраивать, так как операция атомарная и при работе с threading проблем быть не должно (по крайней мере так написано), но я считаю некошерным то что для хранения одного-единственного числа приходится создавать список и потом с ним так извращаться
То что я написал является паттерном типа - мну создает заготовки на все случаи жизни :)
Использование же global :
1. Некошерно
2. Как пишут возможны проблемы как раз при многопоточности

cr0w
23.05.2009, 11:24
login999

В твоей функции Lock, наверное, все же нужен: например, если поток выполняющий эту функцию исполнит код "Count.append(Count[0]+1)" и, не успев выполнить "del Count[0]", передаст управление другому потоку, который исполнит код этой функции целиком, то результат ее выполнения в первом потоке в итоге будет неверным.

А использовать изменяемый объект в качестве дефолтного значения аргумента функции, на мой взгляд, даже "некошернее", чем использовать global. (:

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

login999
23.05.2009, 11:55
login999

В твоей функции Lock, наверное, все же нужен: например, если поток выполняющий эту функцию исполнит код "Count.append(Count[0]+1)" и, не успев выполнить "del Count[0]", передаст управление другому потоку, который исполнит код этой функции целиком, то результат ее выполнения в первом потоке в итоге будет неверным.

А использовать изменяемый объект в качестве дефолтного значения аргумента функции, на мой взгляд, даже "некошернее", чем использовать global. (:

Как мне кажется, удобней было бы реализовать такой счетчик в виде класса.
Имхо классы это лишнее для таких целей
Мну если честно интересует одно - функция-счетчик
А насчет функции - я тут пораскинул моском - я не уверен насчет того, является ли del атомарной операцией, понял что я в этом не уверен и решил переделать эту функцию так:

def Counter (Number=[0]):
Number[0] = Number[0]+1
return Number[0]

А насчет того что там используется изменяемый обьект - и что же здесь плохого? Если такое присваивание возможно, то почему бы его не использовать ?
Тупо одна операция присваивания, теперь точно без локов можно

cr0w
23.05.2009, 12:54
Лок все равно нужен: "Number[0] = Number[0]+1" - не атомрно. А классы, хмм, они очень удобны, даже для таких простых вещей.
Насчет изменяемых объектов: я ж не написал, что не стоит этого использовать, а написал, что это "некошерно". Потому как для кого-то, просматривающего код этой функции, может быть неочевидным то, что список Number будет использоваться один и тот же при каждом вызове функции.

Ergoproxy
04.06.2009, 03:03
Всем ку! как при помощи py2exe создаать только один ехе файл?

five5feer
09.06.2009, 18:49
тут я хочу изучить питон, искал в нете литературу, но так и не определился с чего бы начать;
решил спросить у реальных людей... какие хорошие книги, какие вы читали?

razb
09.06.2009, 19:45
Вообще то вполне достаточно стандартной документации и пара, тройка статей по синтаксису )

login999
10.06.2009, 09:11
тут я хочу изучить питон, искал в нете литературу, но так и не определился с чего бы начать;
решил спросить у реальных людей... какие хорошие книги, какие вы читали?
Викиучебник + курс от Сузи Р.А., и практика, этого хватит

login999
10.06.2009, 09:12
Всем ку! как при помощи py2exe создаать только один ехе файл?
Даже не интересовался подобным вопросом, потому что насколько я знаю, то при сборке в один екзе через py2exe будут проблемы с путями(насколько я понял то там будет тупо распаковка архива где-то в временную папку, а потом уже запуск оттуд, мне же такое не катит), а мне иногда нужна динамическая подгрузка моих модулей...

Ergoproxy
10.06.2009, 13:55
Даже не интересовался подобным вопросом, потому что насколько я знаю, то при сборке в один екзе через py2exe будут проблемы с путями(насколько я понял то там будет тупо распаковка архива где-то в временную папку, а потом уже запуск оттуд, мне же такое не катит), а мне иногда нужна динамическая подгрузка моих модулей...

Во во создаётся тупо архив + в нём ехе, но мля вес его просто ппц :mad:

login999
10.06.2009, 14:16
Во во создаётся тупо архив + в нём ехе, но мля вес его просто ппц :mad:
Ну вес такой и будет - пакуется то интерпритатор + все модули, с этим ничего не поделаешь

login999
10.06.2009, 14:45
Пипец, как бы ни прискорбно, но для threads-safe счетчика пришлось таки юзать класс - взял готовый мини-счетчик с маиллиста питона и переделал его немного по своему :(

class Counter:
def __init__(self, start=0, increment=1):
self.counter = start
self.increment = increment
self.lock = threading.RLock()
def __call__(self):
self.lock.acquire()
self.counter += self.increment
i = self.counter
self.lock.release()
return i
def Get(self):
self.lock.acquire()
i = self.counter
self.lock.release()
return i
def Clear(self):
self.lock.acquire()
self.counter = 0
i = self.counter
self.lock.release()
return i

Gifts
12.06.2009, 20:33
Есть ли какой-то способ уменьшить потребление памяти питоновой программой. Даже простой бот на SleekXMPP отъедает 9 метров оперы. Для ВДС с малой памятью - немало

login999
13.06.2009, 09:00
Есть ли какой-то способ уменьшить потребление памяти питоновой программой. Даже простой бот на SleekXMPP отъедает 9 метров оперы. Для ВДС с малой памятью - немало
Посмотри сюда (http://tinyurl.com/njmv2h) , там есть ссылка еще куда-то где обсуждают этот вопрос. П.С. Не пробовал алгоритм просмотреть, возможно лучше было бы в бесконечных циклах поставить time.sleep() - не будет так бешено мотать

[n]-c0der
14.06.2009, 00:21
Значит твоя программка не мало чего подгружает, оптимизируй...

Ergoproxy
16.06.2009, 15:41
Написать программу поиска самого длинного слова в строке, разделенной пробелами.


Кто знает как реализовать?
Получилось вот так но теперь не знаю как выбрать самое большое :mad:



str = "Mary has a little lamb"
for w in str.split(" "):
a = len(w)
print w, a

login999
16.06.2009, 16:13
ну ежели по тупорылому то за два прохода можно сделать без проблем

stroka = "Mary has a little lamb"
maxlength = 0
splitted_str = stroka.split(" ")
for w in splitted_str:
if len(w)>maxlength:
maxlength = len(w)
else:
pass

for w in splitted_str:
if len(w) == maxlength:
print w
else:
pass

проверил, поправил, 100% рабочий вариант

Ergoproxy
16.06.2009, 16:49
ну ежели по тупорылому то за два прохода можно сделать без проблем

stroka = "Mary has a little lamb"
maxlength = 0
splitted_str = stroka.split(" ")
for w in splitted_str:
if len(w)>maxlength:
maxlength = len(w)
else:
pass

for w in splitted_str:
if len(w) == maxlength:
print w
else:
pass

проверил, поправил, 100% рабочий вариант


Угу спасибо большое, ток вот maxlength для работы с буфером если я не ошибаюсь, а если ли нечто такое ток для строк? для цифр есть max() ПЫСЫ интерес)))

login999
16.06.2009, 16:52
Угу спасибо большое, ток вот maxlength для работы с буфером если я не ошибаюсь, а если ли нечто такое ток для строк? для цифр есть max() ПЫСЫ интерес)))
maxlength - это имя переменной )
обрисуй что ты именно хочешь увидеть, для цифр есть макс потому что там все однозначно, 1>0 и ппц, а как ті будешь вібирать саму большую букву ?

razb
16.06.2009, 16:56
Вот так более компактно)
str = "Mary has a little lamb"
words = {}
for w in str.split(" "):
words[len(w)] = w

print words.get(max(words))

Ergoproxy
16.06.2009, 17:05
Мля и правда :D , ми вдуплил)

Ergoproxy
23.06.2009, 19:50
Как имея файл некий f.txt и содержимое вида:
127.0.0.1 125
10.0.0.1 126

составить словарь вида значение:ключ т.е
{'127.0.0.1 : '125', '10.0.0.1' : '126'}
:confused:

[n]-c0der
23.06.2009, 21:08
Как имея файл некий f.txt и содержимое вида:
127.0.0.1 125
10.0.0.1 126

составить словарь вида значение:ключ т.е
{'127.0.0.1 : '125', '10.0.0.1' : '126'}
:confused:
парсить регуляркой, вообще очень просто.

import re
cortej = {}
with open('file1.txt','a+') as f1:
for word in f1:
txt1 = str(re.findall(r'(\d.*) ',word))[2:-2]
txt2 = str(re.findall(r' (.*)',word))[2:-2]
cortej[txt1]=txt2
print cortej

'''
Example:

file1:

127.0.0.1 34
128.0.0.2 43
134.546.123.1 21

result:

{'134.546.123.1': '21', '128.0.0.2': '43', '127.0.0.1': '34'}
'''

login999
23.06.2009, 22:45
-c0der']парсить регуляркой, вообще очень просто.

import re
cortej = {}
with open('file1.txt','a+') as f1:
for word in f1:
txt1 = str(re.findall(r'(\d.*) ',word))[2:-2]
txt2 = str(re.findall(r' (.*)',word))[2:-2]
cortej[txt1]=txt2
print cortej

'''
Example:

file1:

127.0.0.1 34
128.0.0.2 43
134.546.123.1 21

result:

{'134.546.123.1': '21', '128.0.0.2': '43', '127.0.0.1': '34'}
'''

Ну вот и нахера там регулярка ?

some_dictionary = {}
with open("source.txt") as inpt:
for line in inpt:
line = line.translate(None, "\r\n").split(" ")
some_dictionary[line[0]] = line[1]
print some_dictionary

razb
28.06.2009, 01:31
парсить регуляркой, вообще очень просто.
cortej = {}
2 [n]-coder, не хочу придераться к коду, но кортеж и словарь разные вещи )

[n]-c0der
28.06.2009, 18:34
cortej = {}
2 [n]-coder, не хочу придераться к коду, но кортеж и словарь разные вещи )
вообще то я знаю), разницу.

но cortej красивее...чем slovar к примеру, это раз.
Во вторых ты придрался не к коду, а к тому как я назвал переменную...Думаю тут существенная разница)
cortej = []
dictionary_ = {}
Что бы было спокойней)) и не придирались.

login999
29.06.2009, 09:26
tuple = () - неизменяемая последовательность
list = [] - изменяемая последовательность
dictionary={} - ассоциативный массив

Vilz
29.06.2009, 14:33
Добрые люди, кому не трудно, подскажите, как эмулировать нажатие цифр в режиме ожидания, т.е. наподобие набора номера.

Vilz
29.06.2009, 14:42
Никто не подскажет?

login999
29.06.2009, 15:58
Никто не подскажет?
подробнее можно ?
Типа так:
имеем окошко такого вида:
скриншот
Нужно сделать так-то и так-то:
тут обьяснение

[n]-c0der
02.07.2009, 07:29
Все наверное уже давно слышали, (а может кто уже все прочитал), про перевод документации django...
Понадобилось, сделать офф версию, вот выкладываю может кому нужно будет, http://www.rapidshare.ru/1087746
Иногда вылетают ебнутые ошибки просто жмите окей...

login999
08.07.2009, 11:46
вот надумал переезжать на py3k никто не поделится опытом ?
прет


def жаба():
print("жаба")

жаба()

razb
08.07.2009, 14:10
вот надумал переезжать на py3k никто не поделится опытом ?
Сам пока не переехал, так что ничего конкретного не скажу, вот тут можно почитать довольно интересный материал о нововведениях:
_http://www.ibm.com/developerworks/ru/library/l-python3-1/
_http://www.ibm.com/developerworks/ru/library/l-python3-2/

login999
08.07.2009, 14:46
Чуть не обоссался
поставьте py3k и введите в интерпритаторе import antigravity

razb
08.07.2009, 15:35
Вот тут есть несколько скиншотов грядущего ttk )
_http://code.google.com/p/python-ttk/wiki/Screenshots

Хотя уже привык использовать qt в качестве гуя, а сейчас все таки наверно стоит посмотреть в сторону легковесного tk )

login999
08.07.2009, 16:44
Вот тут есть несколько скиншотов грядущего ttk )
_http://code.google.com/p/python-ttk/wiki/Screenshots

Хотя уже привык использовать qt в качестве гуя, а сейчас все таки наверно стоит посмотреть в сторону легковесного tk )
Не радует то что пока что нету виджета "календарь". :(
И пока вы будете глядеть на скрины я буду тыкать ttk в py3k :)

Ergoproxy
08.07.2009, 16:58
Не радует то что пока что нету виджета "календарь". :(
И пока вы будете глядеть на скрины я буду тыкать ttk в py3k :)


Дык есть ли вообще смысл переезжать?

login999
08.07.2009, 17:19
Дык есть ли вообще смысл переезжать?
Это личное дело каждого.
Я подхожу к этому с такой точки зрения:
1. Я считаю что переходить придется однозначно, рано или поздно, но придется
2. В py3k УЖЕ есть ttk (во 2 ветке будет только в версии 2.7) (это лично для меня :))
3. Питон делают именно третью ветку, вторая - это мост между второй и третьей, реальные улучшения идут в третью ветку, вторая - переход.
Вообще, мое имхо очень просто - переходить придется рано или поздно, тогда почему бы не сейчас ?

Ergoproxy
08.07.2009, 18:23
login999 вот ещё хотел спросить, я питон учю не так давно, в основном была теория, потом решил попрактиковаться, задачника по питону я не нашёл, так что пришлось скачать по с++ (Культин С/С++ в задачах и примерах) но задачки там в основном на циклы, условия и файлы, конечно на первое время пойдёт, но более массивное и для начала можешь что нибудь посоветовать?
Заранее спасибо.

login999
09.07.2009, 00:11
login999 вот ещё хотел спросить, я питон учю не так давно, в основном была теория, потом решил попрактиковаться, задачника по питону я не нашёл, так что пришлось скачать по с++ (Культин С/С++ в задачах и примерах) но задачки там в основном на циклы, условия и файлы, конечно на первое время пойдёт, но более массивное и для начала можешь что нибудь посоветовать?
Заранее спасибо.
О, ну я конечно могу покоситься на свои 1/673 фантика, скорчить умную рожу, сделать вид охуенного кодера , наговорить тучу умных слов(тут многие так шарят), и типа с высоты своего ниибацца авторитета и опыта (аж самому смешно) посоветовать курить маны и т.д.
По сабжу массивных проектов у меня не было, ЛИЧНО Я хочу освоить twisted (но сначала наверное придется раздуплиться с py3k), а для начала могу посоветовать две вещи - посмотреть стандартную библиотеку модулей (http://docs.python.org/modindex.html) если туго с английским, то с переводчиком, это ОБЯЗАТЕЛЬНО тогда можно ориентироваться в выборе инструментов, поверь там много чего лежит, ну ооочень много. А второе-это практика, причем в той области, ради которой ты начал изучать питон, долби эти модули, пока не научишься добиваться от них того, ЧТО ТЫ ХОЧЕШЬ, а не что хотят разрабы этих модулей, а потом начинай писать по мелочи - попробуй написать брут, потом попробуй сделать его многопоточным, потом попробуй прикрутить к нему гуй, потом попробуй прикрутить к нему ConfigParser, потом раздуплись с кодировками, потом уже пробуй написать элементарный спамер, и т.д. усложняй задачу, но не делай так чтоб ты над ней надрывался, это должно происходить легко, просто и непринужденно, и тогда я думаю все будет ок, хотя мне кажется что щас навалит сюда еще куча "профессональных" программистов и насоветуют еще кучу всего всякого разного. И запомни самое главное- реальные питонеры сидят на python.su, и сюда заглядывает только пару человек, ито очееень редко

Ergoproxy
09.07.2009, 00:41
Окс спасибо ещё раз, буду трудиться)
Кароче тада буду идти как шол, а там само всё наладитсо :D

На ачате мало питонеров, так что твой авторитет тут неподрывной)))

gold-goblin
09.07.2009, 01:02
как выриант.
Попробывать по решать эти задачки, http://www.ndcoders.ru/forumdisplay.php?f=99
Их мало + они много направленные (веб, ОС и т.д.)

Fata1ex
13.07.2009, 15:52
mod_python with python 3.0/3.1 ?
Или придется юзать wsgi?

login999
13.07.2009, 15:57
mod_python with python 3.0/3.1 ?
Или придется юзать wsgi?
хз, под веб не пишу

Fata1ex
13.07.2009, 16:09
:D Содержательный ответ ))
Установил пока wsgi, потому что, как я понял, выход mod_python к 3.0 в ближайшее время не планируется :(

razb
13.07.2009, 16:14
mod_python with python 3.0/3.1 ?
ага ))

Fata1ex
13.07.2009, 16:17
чего "ага"? )
вы тут сговорились чтоле? :D

razb
13.07.2009, 16:28
чего "ага"? )
вы тут сговорились чтоле?
Всмысле чем он тебе не подходит?
как я понял, выход mod_python к 3.0 в ближайшее время не планируется
Да уже вроде как 3.3.х вышел ))
_http://httpd.apache.org/modules/python-download.cgi

login999
13.07.2009, 16:41
чего "ага"? )
вы тут сговорились чтоле? :D
А он нужен, мод питон то ?
Попробуй заюзать www.zope.org
получишь в свое распоряжение мощный фреймфорк, который ложил на апач, ибо там и так есть свой веб-сервер

Fata1ex
13.07.2009, 16:46
razb, выйти-то он вышел, но он не поддерживает python 3.0
http://mirror.prvtgeo.com/apache/httpd/modpython/win/3.3.1/
login999, спасибо, посмтрим-с :)

razb
13.07.2009, 17:03
razb, выйти-то он вышел, но он не поддерживает python 3.0
хм, действительно. ну что же тогда юзать wsgi ))

login999
13.07.2009, 19:48
razb, выйти-то он вышел, но он не поддерживает python 3.0
http://mirror.prvtgeo.com/apache/httpd/modpython/win/3.3.1/
login999, спасибо, посмтрим-с :)
Упс, сорри, оказывается ни жопа, ни твистед не портированы под тройку, мну рыдает :(

Ergoproxy
14.07.2009, 23:44
В задачнике нашол задачу решил накодить, но мля опять встал :mad:

Вообщем условие:

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

Сделал вот так:

n = int(raw_input(" n = "))

for i in xrange(0, n):
h = int(raw_input("cifra = "))
print h


Но мля не знаю как сделать так чтоб они складывались :confused:

pento
15.07.2009, 00:11
В задачнике нашол задачу решил накодить, но мля опять встал :mad:

Вообщем условие:

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

Сделал вот так:

n = int(raw_input(" n = "))

for i in xrange(0, n):
h = int(raw_input("cifra = "))
print h


Но мля не знаю как сделать так чтоб они складывались :confused:
Это шутка?

n = int(raw_input(" n = "))
s = 0
for i in xrange(0, n):
h = int(raw_input("cifra = "))
s += h
print "Result:", s

Ergoproxy
15.07.2009, 00:15
pento спс не это не шутко, эт ми ступил ппц :(

login999
15.07.2009, 00:39
Угу, задача решена неверно, использован тип int() вместо float()

Ergoproxy
15.07.2009, 00:42
Угу, задача решена неверно, использован тип int() вместо float()


Да дальше то всё понятно, да и вообще всё понятно мну тупит пис** :D :D :D

login999
15.07.2009, 10:14
прет py3k
перевод файла из одной кодировки в другую в две строки

with open ("utf8.txt", encoding="utf8") as inp, open("cp1251.txt", "w", encoding="cp1251") as out:
out.write(inp.read())


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

Fata1ex
15.07.2009, 12:15
Если оставлять его необязательным, то увеличивается гибкость программы, так как во время открытия файла возможно использование любой кодировки. По-моему так:)

login999
15.07.2009, 12:24
Если оставлять его необязательным, то увеличивается гибкость программы, так как во время открытия файла возможно использование любой кодировки. По-моему так:)
Кодировки есть грабли, через которые проходят очень многоие (я в свое время очень конкретно намучился с этим, да и не один я), просто за счет того чтобы сделать его обязательным (имется ввиду убрать значение по умолчанию), то гибкость не страдает, так как можно выбрать любую, зато отпадает куча вопросов и проблем на тему "А почему у меня крякозябры показывает", айс в py3k то что для внутреннего представления выбран юникод, в 2.6 я делал всем загрузкам из файлов вручную перекодирование в юникод, получалась конкретная путаница :)

Чтоб не быть голословным:

......
def load(self, data, data_encoding=None):
if data_encoding is None:
data_encoding = self.defaultencoding
self.Lock.acquire()
for line in data:
self.Container.append(line.translate(None, "\r\n").decode(data_encoding, "replace"))
if self.StringVar is not None:
try:
self.StringVar.set(len(self.Container))
except RuntimeError:
pass
self.Lock.release()
......
def dump(self, outfile, data_encoding=None, remove=False):
if data_encoding is None:
data_encoding = self.defaultencoding
self.Lock.acquire()
with open(outfile, "a") as out:
for item in self.Container:
out.write("{0}\n".format(item.encode(data_encoding, "replace")))
if remove:
self.Container = []
if self.StringVar is not None:
try:
self.StringVar.set(len(self.Container))
except RuntimeError:
pass
self.Lock.release()
......

Fata1ex
15.07.2009, 12:32
В том-то и дело, чтобы на эти грабли не наступать, сделали значение опциональным. Во многих случаях не важно с какой кодировкой работать.
# ps. код это ваще пэпэцэ :(

login999
15.07.2009, 12:41
В том-то и дело, чтобы на эти грабли не наступать, сделали значение опциональным. Во многих случаях не важно с какой кодировкой работать.
# ps. код это ваще пэпэцэ :(

Вот так это выглядит в py3k (от StringVar отказался, так как встроил Thread-safe счетчики в гуй :D)

......
#Сюда нужно отправлять что типа такого
#with open("bla.txt", encoding=encoding) as inpt:
#some.load(inpt)
#Атрибут загрузки из последовательности(или итератора)
def load(self, data):
self.__Lock.acquire()
for line in data:
self.__Container.append(line.strip("\r\n"))
self.__Lock.release()
......
#Атрибут дампа всех элементов контейнера в файл
def dump(self, outfile, encoding):
self.__Lock.acquire()
with open(outfile, "a", encoding=encoding) as out:
for item in self.__Container:
out.write("{0}\n".format(item))
self.__Lock.release()
......

Fata1ex
15.07.2009, 12:47
encoding=encoding
эээ?

login999
15.07.2009, 12:50
эээ?
encoding имеется ввиду кодировка, пусть будет encoding="utf8", если так понятнее :)

#with open("bla.txt", encoding="utf8") as inpt:
#some.load(inpt)

Fata1ex
15.07.2009, 14:09
Я знаю, что такoe 'encoding', но зачем писать encoding=encoding, разве это нельзя опустить?

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

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

login999
15.07.2009, 14:44
Зависит от порядка передачи аргументов в ф-цию, если передаем не по порядку определенном в прототипе дк так и надо писать )
Ты прафф, я привык к некоей недисциплинированности, часть параметров передаю по порядку, часть по именованию, когда как короче

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

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

P.S. порядок там такой

open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)

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

login999
15.07.2009, 18:51
По-моему, ты написал ровно тоже что и я :) и не ответил на главный вопрос!
Похоже, что я непонятно задаю вопрос. Зачем ты пишешь: 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, мне же нужно записать в другой...

Fata1ex
15.07.2009, 19:01
Разве нельзя изменить кодировку без encoding=encoding после открытия файла и записать в нужной?

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

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

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

Просто вместо того чтобы заниматься перекодированием после загрузки, лучше этот момент затронуть сразу же при загрузке, дабы потом не теряться, особенно напрягает это когда данные в софт загружаются из нескольких источников из одной кодировки а отправляются в другой кодировке, выводить это нужно в терминал/гуй в третьей кодировке, дабы не было проблем, классический пример - спамер, где в него данные грузятся из 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.

Большой джо
20.07.2009, 01:37
Нужна помощь, скачал python с офф сайта http://www.python.org, и не как ни разобратся, как запустить скрипт подскажите плиз!!!

Fata1ex
20.07.2009, 01:44
Читай вики самоучитель.

login999
20.07.2009, 03:31
Нужна помощь, скачал python с офф сайта http://www.python.org, и не как ни разобратся, как запустить скрипт подскажите плиз!!!

Устанавливаешь Python (куда угодно), потом двойной клик на скрипте, и он запустится (если нет проблем с кодировками, синтаксических ошибок, и ты угадал с версией Python)

Большой джо
20.07.2009, 20:04
Python 3.1 сойдёт же???)

Fata1ex
20.07.2009, 20:08
Очень даже
_http://ru.wikibooks.org/wiki/Учебник_Python_3.1
wiki учебник по python 3.1

Большой джо
20.07.2009, 21:28
Ok, спс, буду юзать!!!) А вот, у меня ещё вопрос, возможно ли на python сделать программу exe??

Ergoproxy
20.07.2009, 21:35
Да если за юзаешь PY2EXE, но имхо нах надо... там размер ппц становится, да и толку мало

login999
21.07.2009, 11:14
Ok, спс, буду юзать!!!) А вот, у меня ещё вопрос, возможно ли на python сделать программу exe??

Там получится не программа :D Там выйдет интерпретатор+все модули+сам скрипт, фактически если кто из знакомых собрался юзать твои творения, то после 3 где-то творений, слепленных в екзе уже имеет смысл качать интерпретатор, + я хз насколько хорошо будет работать Tkinter + threading , если он будет юзатьза через py2exe, они и так не шибко так дружат между собой :D Да и вообще, лучше юзать интерпретатор, чем такие цацки

rushter
21.07.2009, 15:07
Покажите пример http get запроса,с использование стандартных модулей.

razb
21.07.2009, 15:25
_http://docs.python.org/library/httplib.html
_http://www.python.org/doc/2.5.2/lib/httplib-examples.html

login999
21.07.2009, 17:02
import urllib
page = urllib.urlopen("http://www.google.com").read()


Или нужно пониже уровнем ?


>>> 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

Ergoproxy
21.07.2009, 22:39
Хотел бы узнать, кто как в питоне разрабатывает граф.интерсфейс? (программно или всё же всё код пишется вручную?)

Если программно токакие программы используете?

gold-goblin
21.07.2009, 23:13
Ergoproxy
какая ос

razb
21.07.2009, 23:13
Смотри в сторону PyQT, PyGTK2, Tkinter

Ergoproxy
21.07.2009, 23:32
ОС Win да про PyQT, PyGTK2, Tkinter эт я в курсе, просто думал может есть какая нить программулина, которая позволяет делать граф.интерфейс не вручную, а типо тык и кнопа и тд :)

razb
21.07.2009, 23:54
Для QT так и делается, используется QT Designer, для GTK можно использовать Glade, для Tk хз мож что то тоже есть, эт надо у login'a спросить мож он знает ))

Ergoproxy
22.07.2009, 00:00
Для QT так и делается, используется QT Designer, для GTK можно использовать Glade, для Tk хз мож что то тоже есть, эт надо у login'a спросить мож он знает ))


А ты сам что юзаешь?

gold-goblin
22.07.2009, 00:04
Я юзаю QT Designer но только под линь. Хз как он под винду =)

Fata1ex
22.07.2009, 00:20
Тиль вроде под ткинтер. Утром поищу.

razb
22.07.2009, 01:16
2Ergoproxy
Использую QT Designer )
gold-goblin
Он входит в стандартный пакет либсы вместе с QAssistent'om(docs) и QLinguist(translations)