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

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

  1. gold-goblin

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

    Joined:
    26 Mar 2007
    Messages:
    917
    Likes Received:
    174
    Reputations:
    3
    мускул на какой оси крутится?
    Посмтри конектица питон или нет.
     
  2. Vaal

    Vaal New Member

    Joined:
    8 Jan 2010
    Messages:
    37
    Likes Received:
    2
    Reputations:
    0
    win server 2003
    как посмотреть?
     
  3. TikTik

    TikTik Member

    Joined:
    20 Feb 2009
    Messages:
    241
    Likes Received:
    12
    Reputations:
    2
    Code:
    import sys
    import string
    
    if len(sys.argv)<2:
        print "Usage: leap.py year, year, year."
    
    sys.exit(0)
    
    for i in sys.argvj[:]:
        try:
    y=string.atoi(i)
    
    except:
    
      print i,"is not a year."
    
    continue
    
      leap="no"
    
      if y%400==0:
    
        leap="yes"
    
      elif y*100==0:
    
        leap="no"
    
      elif y%4==0:
    
        leap="yes"
    
      else:
    
        leap="no"
    
    
      print y, "leap:", leap, "in the Gregorian calendar"
    
    
    if y%4==0:
    
      leap="yes"
    
    else:
    
      leap="no"
    
    
    print y, "leap:", leap, "in the Julian calendar"
    
    print "Calculated leapness for", len { sys.argv ) - 1, "years"
    
    Посмотрите пожалуйста что не так с Кодом :(
     
  4. [Life]

    [Life] Banned

    Joined:
    7 Jan 2010
    Messages:
    74
    Likes Received:
    3
    Reputations:
    0
    Кто знает... ?


    Код:

    ...
    gamma_N=round(float(gamma_0**2),8)
    #print '%F' %(gamma_N)
    i=i+1
    ls=str(gamma_N)
    ls=ls[2:9]
    ls='0.'+ls
    print '%F' %(float(ls))
    lch=round(float(ls)**2,8)
    gamma_0=lch
    print ''
    ...

    Это часть метода серединных квадратов... проблема в том, что после получения среза строки, необходимо преобразовать строку во флоат, но как выяснилось переменная получает число в экспоненциальном виде: 0.5e+006 , что нить такое.. ну и следовательно не получается перегнать во флоат.. Как избежать такой формы записи?! надо чтоб было 0.0000005 например, без всяких e....
     
  5. gold-goblin

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

    Joined:
    26 Mar 2007
    Messages:
    917
    Likes Received:
    174
    Reputations:
    3
    в консоле мускул сервера набрать команду хммм если честно не помню =)
    попробуйте поискать в интернете или сделать вот что: после завершения скрипта в консоле мускула введите mysql_error это пакежет последнюю ошибку (тоесть ошибку подключения вашего клиента)
     
  6. gold-goblin

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

    Joined:
    26 Mar 2007
    Messages:
    917
    Likes Received:
    174
    Reputations:
    3
    если память не подводит то перед преобразованием надо использовать функцию abs()
     
  7. gold-goblin

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

    Joined:
    26 Mar 2007
    Messages:
    917
    Likes Received:
    174
    Reputations:
    3
    Помогите с регулярками плиз =)
    Блин что-то я их не понимал и понять не могу =(
    Помогите составит регулярку чтоб выдрать строку вида: http://****.ru или http://***.***.ru Буду благодарен =)
     
  8. login999

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

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    Code:
    import re
    
    data = "http://vasya.ru ,http://super.vasya.ru"
    links_1 = re.findall(r'''(http\:\/\/.*?\.ru)''', data)
    links_2 = re.findall(r'''(http\:\/\/.*?\..*?\.ru)''', data)
    links_3 = re.findall(r'''(http\:\/\/.*?\.ru)|(http\:\/\/.*?\..*?\.ru)''', data)
    
    print links_1
    print links_2
    print links_3
    
    
    Правда не совсем то
     
  9. Vaal

    Vaal New Member

    Joined:
    8 Jan 2010
    Messages:
    37
    Likes Received:
    2
    Reputations:
    0
    по регуляркам вот тут хорошая статьи
    http://www.intuit.ru/department/pl/python/6/5.html
    там есть скрипт дебаг регулярных выражений



    тут такой вопрос возник
    как перезапустить скрипт? т.е. не стартануть его "копию" после завершения
    а именно чтобы программа начала выполняться сначала


    update
    нашел вроде бы простое решение
    сделать бесконечный цикл
    while True:

    какие подводные камни могут всплыть?
     
    #509 Vaal, 19 Jan 2010
    Last edited: 20 Jan 2010
  10. gold-goblin

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

    Joined:
    26 Mar 2007
    Messages:
    917
    Likes Received:
    174
    Reputations:
    3
    Бесконечный цикл самое надежное решение (ИМХО).
    Подводных камней быть не должно. Могут возникнуть проблемы с потоками (если ты их используешь) при условии что 1 из потоков не завершится (со временем их станет очень много.)
     
  11. login999

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

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    Для дебага регулярок есть Kodos.
    Относительно бесконечной работы - всё зависит от того, что ты хочешь именно, но обычно while True хватает за глаза.
     
  12. login999

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

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    Враки.
    Code:
    #! /usr/bin/env python
    #-*-encoding:UTF-8-*-
    
    import sys
    print u"Ваша функция может выполниться максимум {0} раз".format(sys.getrecursionlimit())
    
     
    1 person likes this.
  13. Vaal

    Vaal New Member

    Joined:
    8 Jan 2010
    Messages:
    37
    Likes Received:
    2
    Reputations:
    0
    ну пока вроде цикл работает без проблем

    такой еще вопрос
    читается лог
    Code:
     with open(path2mislog, 'r') as f:
                     logfile = f.readlines()
            f.closed
            logfile = list(set(logfile))
            logfile = sorted(logfile)
    из него удаляются одинаковые строки
    после чего слетает сортировка по времени
    сортирую
    но события которые происходят в одно и тоже время не всегда встают на места

    это можно как то исправить?
     
  14. login999

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

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    Лично я - хз как, я бы удаление дублей делал бы в таком случае не так - создавал бы два массива, а потом циклом гонял бы по одному и вставлял в другой массив - тогда должен сохраниться порядок
     
  15. daniel_1024

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

    Joined:
    15 Jul 2009
    Messages:
    260
    Likes Received:
    227
    Reputations:
    386
    есть скрипт парсинга гугла по определенному запросу и запись результатов в текстовик:
    Code:
    #!usr/bin/env python3
    dork = 'inurl:page_id+"Gallery+powered+by+fMoblog"'
    page = 10
    reg = 'class=r»«a href="([^"&]*)'
    print "# start"
    print "# dork:" + dork
    print "# all page: " + str(page)
    fo = open('google.txt','w')
    print "# google.txt open"
    import curl
    import time
    import re
    for i in xrange(0,page):
    url = "http://www.google.com/search?q="+dork+"&start=" + str(i*10)
    rez = curl.url_get(url)
    rez = re.findall(reg,rez)
    for item in rez:
    fo.write(item+"\n")
    print "# page "+str(i+1)+" done"
    time.sleep(2)
    fo.close
    print '# all done'
    
    он не работает...в чем ошибка ?
    ругается на строку
    url = "http://www.google.com/search?q="+dork+"&start=" + str(i*10)
     
    #515 daniel_1024, 23 Jan 2010
    Last edited: 24 Jan 2010
  16. login999

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

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    Наверное потому что ты забил на отступы.
    До тех пор пока будешь Python-код подсвечивать как PHP-код, то у тебя ни один из скриптов работать и не будет.
     
  17. Vaal

    Vaal New Member

    Joined:
    8 Jan 2010
    Messages:
    37
    Likes Received:
    2
    Reputations:
    0
    кажется то что нужно?
    http://stackoverflow.com/questions/1801459/algorithm-how-to-delete-duplicate-elements-in-a-list-efficiently/1801471#1801471
     
  18. login999

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

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    Ну хз, я там вижу большинство кода на других ЯП :)
    Для питона основное решение там - это то, что я предлагал.
    Моё решение :
    Code:
    def remove_dupies(lst):
        sorted_lst = []
        for x in lst:
            if x not in sorted_lst:
                sorted_lst.append(x)
        return sorted_lst
    
     with open(path2mislog, 'r') as f:
                     logfile = f.readlines()
            f.closed
            logfile = remove_dupies(logfile)
            logfile = sorted(logfile)
    
    Никакой оригинальности/производительности. Тривиальное решение, которое подхавает оперативки в двухкратном размере файла. Если нужно что-то покруче, то хз придется изьёбываться :)
     
  19. CyberHunter

    CyberHunter Active Member

    Joined:
    6 Jan 2010
    Messages:
    601
    Likes Received:
    116
    Reputations:
    37
    Скажите как изменить чтобы работал? Как раз нужен подобный скрипт :)
     
  20. login999

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

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    Эмм, если честно, то я не уверен что он вам подойдёт, если обратите внимание на то, что он требует pyCURL и знание питоновских регулярок...
    Лучше уж пропросите чтоб Вам его переписали под стандартную библиотеку...
    Но на всякий случай :
    Code:
    #!usr/bin/env python3
    import re
    import curl
    import time
    dork = 'inurl:page_id+"Gallery+powered+by+fMoblog"'
    page = 10
    reg = 'class=r»«a href="([^"&]*)'
    print "# start"
    print "# dork:" + dork
    print "# all page: " + str(page)
    fo = open('google.txt','w')
    print "# google.txt open"
    for i in xrange(0,page):
        url = "http://www.google.com/search?q="+dork+"&start=" + str(i*10)
        rez = curl.url_get(url)
        rez = re.findall(reg,rez)
        for item in rez:
            fo.write(item+"\n")
        print "# page "+str(i+1)+" done"
        time.sleep(2)
    fo.close
    print '# all done'
    
    P.S. pyCURL под рукой нету чтобы проверить, но должно работать.