[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.
    1. 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 ​

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

      Дальше будут IDE
       
      #2 login999, 21 Jan 2009
      Last edited: 3 Nov 2009
      1. Chaak

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

        Joined:
        1 Jun 2008
        Messages:
        1,059
        Likes Received:
        1,067
        Reputations:
        80
        Как в urllib2 cделать, чтобы скрипт не переходил по редиректу?
         
        1. 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. Подобными задачами никогда не занимался :) Скорее наоборот, так что поконкретнее ничего не скажу, и инет лагает, чтобы нормально проверить :(
           
          1. 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
            1. 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
              1. 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
                 
                1. Chaak

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

                  Joined:
                  1 Jun 2008
                  Messages:
                  1,059
                  Likes Received:
                  1,067
                  Reputations:
                  80
                  Дык у меня редирект проскакивает, а кукисы не ловит =\\\
                   
                  1. 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
                     
                    1. 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.
                      1. 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.
                        1. 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
                          1. Велемир

                            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

                            Че за блок я хз... Делал,как было написано.
                             
                            1. 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 пробел)
                               
                              1. Велемир

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

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

                                  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
                                  1. 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] 
                                    
                                    Дело в отступах в первую очередь, где у тебя функция а где сам код проги хз, хрен отличишь.
                                    
                                    Если что я пока в асе, стучи помогу.
                                     
                                    1. Велемир

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


                                      ЗЫ:

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

                                        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'


                                        Возникает вопрос: Где взять эти функции ?
                                         
                                        1. 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 - и тебе рекомендую