Уже прочитал мануалы, в этоге вот это я хотел: 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)
Некорректно работает сканер портов, результат выдает правильный, но потом эти данные невозможно обработать, код: 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
Это ожидаемая реакция. Главный поток имеет тот же приоритет, что и созданные им дополнительные потоки. Поэтому выполнение продолжается Возможно вы имели ввиду порядок команд? Тогда вам стоит обратиться обратиться к гуглу с вопросом, как же правильно делать многопоточные приложения Не только, и не столько из-за этого - если бы вы не ленились, то не стали бы использовать try-except без указания типа исключения. Так как сомнительно, чтобы на целевой машине были открыты все порты - происходит ожидание таймаута соединения и только после этого поток отваливается Теперь общие замечания - делать на каждый порт свое соединение - плохая идея. Создавайте пул из 5-20 потоков, которым будете подсовывать данные для проверки, например с помощью модуля Queue Что вы хотите получить с помощью if getservbyport(port) != ''? Важнее само наличие открытого порта, чем знать имя стандартного сервиса, который ОБЫЧНО, а не именно в данном случае открывается на порту
Вы удивитесь, но так и есть.) Программа демонстрационная, и в реальной работе использоваться не будет, того что она покажет, будет вполне достаточно, если это будут только знакомые питону сервисы. Я бы не задал вопрос, если бы предварительно не поискал в гугле и не попробовал разные варианты, ну не понять мне как правильно организовать многопоточность, не вешаться же из-за этого, стараюсь искать выходы, пробовать, пока как видите не получается. Дело не в лени, а в знаниях, точнее в их нехватке.
Сначало обращу внимание на то, как ты задаёшь вопрос. Задача не ясна. Поставь себя на наше место. Не совсем понятно, установлен ли у тебя интерпретатор 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).
Я крутой ясновидящий Попробую угадать: Во второй строчке скрипта (или мб в первой) замени UTF-8 на CP1251
Каким образом можно задать время что бы функция останавливалась а потом снова запускалась на промежуток времени и потом на то же самое время останавливалсь и тд? Предполагаю что time.sleep() но не знаю как его приминить к функции что бы он работал по выше изложенному правилу.
подскажите, не могу запустить python скрипт на винде PATH прописал верно, не пашет интерпретатор - запускается на долю секунды окошко и пропадает че делать? если не трудно - в аську - 8-7-5-3-2-5 перепробовал что угодно (( не запускается ((( вроде все как в инструкциях делаю
Прописал туда, куда нужно? в path (системная переменная)? Читай, что выше было написано про окно интерпретера. Покажи сам скрипт
Может ты запускаешь скрипт просто сделав двойной щелчок на файле? , через cmd->python->script(твой файл) - не пробывал?
та пробовал, я что то не правильно может вбиваю в cmd раньше двойным щелчком запускалось, а после переустановки винды уже не запускается
kaargan запустите скрипт из командной строки, возможно не хватает модулей, раз переустанавливали систему. Найдите строчки со словом import и посмотрите наличие таких модулей в папке с установленным питоном
Такой вопрос, вот допустим я создаю модуль test в другом python скрипте пишу import test и теперь во время выполнения этого скрипта я обновляю содержимое модуля test, как заставить основную программу, не перезапуская, обновить этот модуль test?