Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   [Python] вопрос/ответ. (https://forum.antichat.xyz/showthread.php?t=102344)

De-visible 21.01.2009 02:53

[Python] вопрос/ответ.
 
Для тех кто собирается начать программировать на 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
 
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 - мощный фреймворк для разработки веб-приложений
Pylons - "лёгкий" фреймворк для веб-программирования
TurboGears - мощный фреймворк для веб-программирования
Zope - мощный фреймворк для веб-программирования, очень мощный

---Network:
Twisted - сетевой фреймворк для асинхронного программирования

---Gui :
PyGTK - фреймворк для разработки Gui, привязка к GTK+
PyQt - фреймворк для разработки Gui, привязка к Qt
wxPython - фреймворк для разработки Gui, привязка к wxWidgets

Литература :

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

По английски :
Dive into python 3
Книга по Django

Разная литература

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


Русскоязычный форум по 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

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

Вот как сюда прикрутить отловку?
PHP код:

def getPage(urlproxy ""cookies ""data ""referer ""timeout 10):
    
req urllib2.Request(urldata);

    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(reqdatatimeout);
    
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

Цитата:

Сообщение от ChaaK
Дык у меня редирект проскакивает, а кукисы не ловит =\\\

насчет редиректа тебе объяснили выше.

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(cookie),proxy)
        else:
            opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
        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

Цитата:

Сообщение от faza02
как подсчитать кол-во строк, например в 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

Цитата:

Сообщение от faza02
реально ли, в питоне создать хэш DES, mysql и др.?
md5 и sha1 ненадо.

Конечно, и это кстати сделано до нас...

faza02 23.02.2009 16:44

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

De-visible 23.02.2009 16:54

Цитата:

Сообщение от faza02
да, но какими модулями? в хэшлиб не нашел.
если можно, пример.

Примеры в гуглах,

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

Цитата:

Сообщение от faza02
какими модулями считывать хеадеры страниц? лучше с примером.

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 но всё равно не устанавливает.


Время: 01:30