2016-10-09 4 views
-2

У меня есть этот код:передавая аргумент из питона в subprocess.Popen

from subprocess import Popen 
link="abc" 
theproc = Popen([sys.executable, "p1.py",link]) 

Я хочу послать переменную «ссылку» в p1.py, и p1.py будет печатать его.

что-то вроде этого. здесь p1.py:

print "in p1.py link is "+ link 

Как я могу это сделать?

+0

печати «в p1.py связи является» + ссылка - это p1.py –

ответ

0

Я предполагаю, что python относится к Python 2.x в вашей системе.

Получить аргумент командной строки в p1.py с помощью sys.argv:

import sys 

if not len(sys.argv) > 1: 
    print "Expecting link argument." 
else: 
    print "in p1.py link is " + sys.argv[1] 

Там есть функция subprocess.check_output, что проще в использовании, если вы только хотите, чтобы вызвать программу и получить его выход:

from subprocess import check_output 

output = check_output(["python", "p1.py", "SOME_URL"]) 
print "p1.py returned the following output:\n'{}'".format(output) 

Пример вывода:

$ python call_p1.py 
p1.py returned the following output: 
'in p1.py link is SOME_URL 
' 
+0

, если я хочу отправить 2 арг Как мне это сделать? –

+0

Просто добавьте еще несколько элементов в список, переданный 'check_output'. Что касается получения их в 'p1.py',' sys.argv' - это список, содержащий имя, в котором была запущена программа, и его аргументы, поэтому 'sys.argv [1]' является первым аргументом 'sys.argv [ 2] 'второй и т. Д. – dkasak

+0

@shirastenmetz Примите мой ответ, если вы удовлетворены этим. – dkasak

0

Вы должны проанализировать аргументы командной строки в вашем p1.py, чтобы получить его в переменной:

import sys 
try: 
    link = sys.argv[1] 
except IndexError: 
    print 'argument missing' 
    sys.exit(1) 
Смежные вопросы