[Python] вопрос/ответ.

Discussion in 'Python' started by De-visible, 21 Jan 2009.

  1. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    Для тех кто собирается начать программировать на Python.

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

    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
     
    #1 De-visible, 21 Jan 2009
    Last edited: 5 Feb 2009
    6 people like this.
  2. login999

    login999 Elder - Старейшина

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    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
     
    #2 login999, 21 Jan 2009
    Last edited: 3 Nov 2009
  3. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    Как в urllib2 cделать, чтобы скрипт не переходил по редиректу?
     
  4. login999

    login999 Elder - Старейшина

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    http://diveintopython.org/http_web_services/redirects.html

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

    login999 Elder - Старейшина

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    А вообще, то лучше было бы попробовать для этого что то типа этого:
    Code:
    redir=urllib2.urlopen("www.someurl.com").geturl()
    if "REDIR" in str(redir):
        pass
    else:
        blah-blah-blah
    
     
    #5 login999, 21 Jan 2009
    Last edited: 21 Jan 2009
  6. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    Мне требуется авторизоваться на одном сайте, и отловить кукисы.

    Вот как сюда прикрутить отловку?
    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();
     
    #6 Chaak, 21 Jan 2009
    Last edited: 21 Jan 2009
  7. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    И в чем сложность?

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

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

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    Дык у меня редирект проскакивает, а кукисы не ловит =\\\
     
  9. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    насчет редиректа тебе объяснили выше.

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

    login999 Elder - Старейшина

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    Вот тебе кусок, где urllib2 хватает кукисы:
    Code:
    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, это часть того, о чем мы говорили :)
     
    3 people like this.
  11. inlanger

    inlanger Elder - Старейшина

    Joined:
    7 Jan 2007
    Messages:
    985
    Likes Received:
    283
    Reputations:
    27
    Как через ctypes подключить коммуникатор к инету? Пример на си тут:
    http://msdn.microsoft.com/en-us/library/aa916370.aspx
     
    1 person likes this.
  12. login999

    login999 Elder - Старейшина

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    Честно сказать -я хз, кроме Бидона нифига не знаю,и не имею никакого представления о С, могу только послать ссылкой на
    http://www.ragbag.ru/2007/03/23/python_ctypes_magic/
    Что могу сказать - только одно, сначала нужно сам твой пример на С сделать функцией и всунуть его в либу, потом уже пытаться импортировать в Бидон, но это так - предположения
     
    #12 login999, 22 Jan 2009
    Last edited: 22 Jan 2009
  13. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    def s(a):

    print(a)

    s("dfgghfh")

    Пишет:

    print(a)
    ^
    IndentationError: expected an indented block

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

    gold-goblin Elder - Старейшина

    Joined:
    26 Mar 2007
    Messages:
    917
    Likes Received:
    174
    Reputations:
    3
    надо отступ перед принт.
    получится так:
    Code:
    Def s(a):
        print(a)
        s("dfgghfh")
    (можно и 1 пробел)
     
  15. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Терь работает,вот только функция должна выводить всё,что я ей передаю в качестве параметров,а она молчит...

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

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    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 ?Но он же расположенв её *области видимости*.
     
    #16 Велемир, 25 Jan 2009
    Last edited: 25 Jan 2009
  17. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    Мне наоборот нравится так как есть, вообщем отступы в питоне играют очень важную роль, и еще заключай свой код в теги
    Code:
     исправь в своих постах....
    
    [QUOTE][QUOTE=Велемир]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 ?Но он же расположенв её *области видимости*.[/QUOTE][/QUOTE] 
    
    Дело в отступах в первую очередь, где у тебя функция а где сам код проги хз, хрен отличишь.
    
    Если что я пока в асе, стучи помогу.
     
  18. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Поставил тэги...Надеюсь,что правильно.


    ЗЫ:

    Проблему решилИ... Всем спасибо за участие )
     
    #18 Велемир, 25 Jan 2009
    Last edited: 25 Jan 2009
  19. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Опять трабла - в модуле нет ни функции find(),ни lower()...Интерпретатор Python 3.0(последний)+PyScripter(тоже последний).Сам модуль имеется.

    Code:
    
    import string
    a = "sdFgsSDfS"
    print(string.lower(a))
    
    
    Сам резалт:

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


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

    login999 Elder - Старейшина

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    Code:
    s="aaaaaaASFG"
    s=s.lower()
    print s
    
    ^^^^^
    ПРИМЕР
    Для этого не нужно импортировать модуль -эти функции - встроенные
    П.С. лучше не юзай python3000 -по нему нет ни доков толковых (на русском)+сам он по себе сырой
    Я лично пользуюсь 2.6.1 - и тебе рекомендую