2015-04-22 6 views
0

Я прочитал уже в этом What is the best way to call a Python script from another Python script?команда Python в питон скрипт из другого питона сценария

В моем случае я не хочу, чтобы вызвать другой сценарий питона в питон скрипт, но я хочу, чтобы позвонить, например, ssylze.py с конкретными вариантами

$ python sslyze.py --regular www.target1.com 

, как считают в https://code.google.com/p/sslyze/wiki/QuickStart

Так я скрипт test1.py и в этом сценарии я хотел бы использовать

sslyze.py --regular www.target1.com 

как я это делаю?

+0

модуль argparse –

+1

subprocess.Popen ([ "питон", "sslyze.py", "--regular", «www.target1. com "]) – paddyg

+0

Почему вы просто не импортируете sslyze' и не вызываете какую-либо функцию точки входа в командной строке? Если это разумно структурировано, это будет тривиально. – jonrsharpe

ответ

1

Не уверен, что я расшифровал код из вашего комментария в порядке и это то, что вы пытаетесь сделать. Поскольку я не знаю, что делает sslyze.py, я не тестировал его. Однако ваша проблема может быть из-за не дожидаясь каждого подпроцесса прекратить:

import subprocess 
with open("ip.txt", "r") as file_in: 
    fname = "scan.txt" 
    with open("scan.txt","w") as file_out: 
    for line in file_in: 
     process = subprocess.Popen(["python", "sslyze.py", "--regular", line], stdout=subprocess.PIPE) 
     file_out.write(process.communicate()) # you might need to append \n to whatever you write 
+0

, если я делаю это так: я получаю следующее исключение: «Файл« SHA1Scanner.py », строка 38, в file_out.write (process.communicate()) TypeError: ожидается объект символьного буфера« – Loretta

+0

процесс. wait() отсутствует, это была моя проблема. но спасибо за косвенный отзыв с командой «с» - это намного лучше, чем я сделал;) – Loretta

0

Вы можете использовать argparse module:

import argparse 
parser = argparse.ArgumentParser() 
parser.add_argument("-r", "--regular", action="store") 
args = parser.parse_args() 
print vars(args)["regular"] 

Запуск выше фрагмент кода (asd.py) с python asd.py --regular www.target1.com напечатает "www.target1.com". Надеюсь, это дает достаточно примера, чтобы быть полезным.

+0

Я не намерен печатать домен, или я понимаю, что вы ошибаетесь. – Loretta