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

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

  1. randman

    randman Members of Antichat

    Joined:
    15 May 2010
    Messages:
    1,366
    Likes Received:
    610
    Reputations:
    1,101
    Ссылку?

    С каким именно расширением код?
     
    #761 randman, 30 Nov 2010
    Last edited: 30 Nov 2010
  2. FewG

    FewG Member

    Joined:
    25 Dec 2009
    Messages:
    136
    Likes Received:
    12
    Reputations:
    0
    Уже прочитал мануалы, в этоге вот это я хотел:
    Code:
    result = ""
    binary_code = input("Geben Sie den Binaercode ein: ")
    for byte in binary_code.strip().split(" "):
        decimal = int(byte, 2)
        result += chr(decimal)
    print("Endergebnis: ", result)
     
  3. Le Fruit

    Le Fruit New Member

    Joined:
    13 Dec 2010
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Некорректно работает сканер портов, результат выдает правильный, но потом эти данные невозможно обработать, код:

    Code:
    import threading,sys
    from socket import *
    
    class MyThread(threading.Thread):
    	def __init__(self, func, ip, port):
    		threading.Thread.__init__(self)
    		self.func = func
    		self.ip = ip
    		self.port = port
    	def run(self):
    		apply(self.func,(self.ip, self.port))
    
    def Scan(ip,port):
        list=[]
        try:
            sk = socket(AF_INET, SOCK_STREAM)
            sk.connect((ip, port))
            if getservbyport(port) != '' : print "OPEN: ",port," :: ",getservbyport(port)
            sk.close()
        except:pass
    
    def s():
        print '\nStart'
        for i in range(start,(end+1)):
            MyThread(Scan,host,i).start()
        return 0
    
    
    host = sys.argv[1]
    start = int(sys.argv[2])
    end = int(sys.argv[3])
    s()
    print '123'
    смотрим на последние 2 строчки, сначала идет вызов функции, потом print, однако при запуске, сначала выдается '123', а затем уже результат работы, хотелось бы как-то оперировать полученными данными, а также, чтобы порядок выполнения операторов задавал я, а не питон выбирал %) Также в конце программа слегка подвисает, независимо от диапазона портов (больше/меньше), на одинаковое время, предполагаю, что это из-за неправильной организации многопоточности, помогите довести скрипт до ума.

    P.S. Запускаю на Python 2.7, Windows 7 64-bit
     
  4. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Это ожидаемая реакция. Главный поток имеет тот же приоритет, что и созданные им дополнительные потоки. Поэтому выполнение продолжается

    Возможно вы имели ввиду порядок команд? Тогда вам стоит обратиться обратиться к гуглу с вопросом, как же правильно делать многопоточные приложения

    Не только, и не столько из-за этого - если бы вы не ленились, то не стали бы использовать try-except без указания типа исключения. Так как сомнительно, чтобы на целевой машине были открыты все порты - происходит ожидание таймаута соединения и только после этого поток отваливается

    Теперь общие замечания - делать на каждый порт свое соединение - плохая идея. Создавайте пул из 5-20 потоков, которым будете подсовывать данные для проверки, например с помощью модуля Queue

    Что вы хотите получить с помощью if getservbyport(port) != ''? Важнее само наличие открытого порта, чем знать имя стандартного сервиса, который ОБЫЧНО, а не именно в данном случае открывается на порту
     
    _________________________
  5. Le Fruit

    Le Fruit New Member

    Joined:
    13 Dec 2010
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Вы удивитесь, но так и есть.) Программа демонстрационная, и в реальной работе использоваться не будет, того что она покажет, будет вполне достаточно, если это будут только знакомые питону сервисы.

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

    Дело не в лени, а в знаниях, точнее в их нехватке.
     
  6. kaargan

    kaargan Banned

    Joined:
    27 Jun 2010
    Messages:
    0
    Likes Received:
    2
    Reputations:
    0
    кто поможет?
    Не могу запустить скрипт питона на компе, винда 7
     
  7. modestus

    modestus New Member

    Joined:
    12 Oct 2010
    Messages:
    33
    Likes Received:
    4
    Reputations:
    5
    Moar Info
     
  8. Renji

    Renji Member

    Joined:
    5 Dec 2010
    Messages:
    24
    Likes Received:
    5
    Reputations:
    0
    Сначало обращу внимание на то, как ты задаёшь вопрос. Задача не ясна. Поставь себя на наше место. Не совсем понятно, установлен ли у тебя интерпретатор Python, выдетает ли ошибка при старте твоего скрипта, или что-то еще. Вообще, по устному соглашению, желательно показывать сам скрипт. И его нет в твоём вопросте. Запомни правило: для того, чтобы получить ответ - умей правильно задать вопрос.

    "Правильный" запуск скрипта на Windows — скорее всего, просто двойной щелчок по нему.

    Перейдём у самому вопросу.
    Не будь так уверен, что ты его не запускаешь. С большей вероятностью этот скрипт работает, и исправно, просто, как только он выполняет поставленную задачу - он завершается, и ты не успеваешь это заметить. Распространённая ошибка новичков.
    Как решить? А вот так:

    1. Запусти командный интерпретатор (например, Пуск => Выполнить => "cmd").

    2. Перейди в каталог, в котором находится скрипт, командой наподобие следующей:
    Code:
    cd c:\temp\
    
    3. Попробуй команду наподобие следующей:
    Code:
    имя_скрипта.py
    
    Или:
    Code:
    python имя_скрипта.py
    
    Запуск консольных скриптов .py двойным щелчком не всегда удобен: окно командного интерпретатора закрывается сразу после исполнения скрипта. Чтобы окно командного интерпретатора оставалось на экране, необходимо заменить команду в реестре на такую:

    cmd /k ""C:\Python25\python.exe" "%1" %*"

    Это параметр "По умолчанию" в разделе HKEY_CLASSES_ROOT\Python.File\shell\open\command.

    Другой способ борьбы с закрытием окна командного интерпретатора:
    Code:
    # -*- coding: cp1251 -*-
    print unicode('Привет, Мир!', 'cp1251')
    raw_input(unicode('Для завершения нажмите Enter...', 'cp1251').encode('cp866'))
    
    В твоём случае в конце скрипта прописать строку:
    Code:
    raw_input(unicode('Для завершения нажмите Enter...', 'cp1251').encode('cp866'))
    
    Если я плохой ясновидящий, то тебе стоит показать свой код и подробнее описать проблему (указывая версию интерпретатора, etc).
     
  9. modestus

    modestus New Member

    Joined:
    12 Oct 2010
    Messages:
    33
    Likes Received:
    4
    Reputations:
    5
    Я крутой ясновидящий ;)
    Попробую угадать:
    Во второй строчке скрипта (или мб в первой) замени UTF-8 на CP1251
     
  10. triger

    triger New Member

    Joined:
    7 Aug 2010
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Каким образом можно задать время что бы функция останавливалась а потом снова запускалась на промежуток времени и потом на то же самое время останавливалсь и тд? Предполагаю что time.sleep()
    но не знаю как его приминить к функции что бы он работал по выше изложенному правилу.
     
  11. kaargan

    kaargan Banned

    Joined:
    27 Jun 2010
    Messages:
    0
    Likes Received:
    2
    Reputations:
    0
    подскажите, не могу запустить python скрипт на винде
    PATH прописал верно, не пашет
    интерпретатор - запускается на долю секунды окошко и пропадает

    че делать?
    если не трудно - в аську - 8-7-5-3-2-5


    перепробовал что угодно (( не запускается

    ((( вроде все как в инструкциях делаю
     
    #771 kaargan, 19 Dec 2010
    Last edited: 19 Dec 2010
  12. FewG

    FewG Member

    Joined:
    25 Dec 2009
    Messages:
    136
    Likes Received:
    12
    Reputations:
    0
    Прописал туда, куда нужно? в path (системная переменная)?

    Читай, что выше было написано про окно интерпретера.

    Покажи сам скрипт ;)
     
  13. ad3ud

    ad3ud New Member

    Joined:
    8 Dec 2010
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Может ты запускаешь скрипт просто сделав двойной щелчок на файле? :), через cmd->python->script(твой файл) - не пробывал?
     
  14. ad3ud

    ad3ud New Member

    Joined:
    8 Dec 2010
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Попробуй работать с потоками...
     
  15. kaargan

    kaargan Banned

    Joined:
    27 Jun 2010
    Messages:
    0
    Likes Received:
    2
    Reputations:
    0

    та пробовал, я что то не правильно может вбиваю в cmd


    раньше двойным щелчком запускалось, а после переустановки винды уже не запускается
     
  16. kaargan

    kaargan Banned

    Joined:
    27 Jun 2010
    Messages:
    0
    Likes Received:
    2
    Reputations:
    0

    со скриптом порядок полный, он работал на прошлой машине безотказно
     
  17. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    kaargan запустите скрипт из командной строки, возможно не хватает модулей, раз переустанавливали систему. Найдите строчки со словом import и посмотрите наличие таких модулей в папке с установленным питоном
     
    _________________________
  18. XCoder

    XCoder New Member

    Joined:
    11 Sep 2010
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Такой вопрос, вот допустим я создаю модуль test
    в другом python скрипте пишу import test
    и теперь во время выполнения этого скрипта я обновляю содержимое модуля test, как заставить основную программу, не перезапуская, обновить этот модуль test?
     
  19. kaargan

    kaargan Banned

    Joined:
    27 Jun 2010
    Messages:
    0
    Likes Received:
    2
    Reputations:
    0
    как правильно это делать ??
     
  20. kaargan

    kaargan Banned

    Joined:
    27 Jun 2010
    Messages:
    0
    Likes Received:
    2
    Reputations:
    0
    пишет мне если запускаю через cmd :

    no module named (имя скрипта)
     
    #780 kaargan, 19 Dec 2010
    Last edited: 19 Dec 2010