2015-11-27 4 views
-2

Я пытаюсь запустить свой test_script.py в main_script.py с помощью подпроцесса. test_script.py - это программа с несколькими суммами, а main_script.py должна вызывать ее с двумя аргументами и вывести вывод. Вот код:Результат проверки подпроцесса Python не работает

test_script.py

a = int(input()) 
b = int(input()) 

print(a+b) 

main_script.py

import subprocess 
subprocess.check_output(['python', 'test_script.py', 2,3]) 

Это им ошибка при получении:

Traceback (most recent call last): 
    File "C:/Users/John/Desktop/main_script.py", line 2, in <module> 
    subprocess.check_output(['python', 'test_script.py', 2,3]) 
    File "C:\Python34\lib\subprocess.py", line 607, in check_output 
    with Popen(*popenargs, stdout=PIPE, **kwargs) as process: 
    File "C:\Python34\lib\subprocess.py", line 858, in __init__ 
    restore_signals, start_new_session) 
    File "C:\Python34\lib\subprocess.py", line 1085, in _execute_child 
    args = list2cmdline(args) 
    File "C:\Python34\lib\subprocess.py", line 663, in list2cmdline 
    needquote = (" " in arg) or ("\t" in arg) or not arg 
TypeError: argument of type 'int' is not iterable 
+0

http://stackoverflow.com/questions/14078117/how-do-you-use-subprocess-check-output-in-python – Tempux

+0

ИМХО, это это плохая практика для вызова одного сценария из другого. Лучше просто «импортировать test_script» из 'main_script.py'. Или создайте функции/классы create в 'test_script' и вызовите их из' main_script.py', как 'test_script.my_function (2,3)' –

ответ

0

Все части Аргумент должен содержать строку. Выполните следующие действия:

subprocess.check_output(['python', 'test_script.py', "2", "3"]) 

Если эта команда не запускается, вы получите исключение. Для того, чтобы поймать его и увидеть результаты:

try: 
    subprocess.check_output(['python', 'test_script.py', "2", "3"], stderr=subprocess.STDOUT) 
except subprocess.CalledProcessError as e: 
    print e.output 

Ваш второй скрипт не потому, что он ожидает ввода от стандартного ввода, в то время как ваш мастер-скрипт посылает 2 и 3 в качестве аргументов. Исследовать sys.argv

+0

Я получаю эту ошибку 'subprocess.CalledProcessError: Command '[' python ',' test_script.py ',' 2 ',' 3 ']' возвращает ненулевой статус выхода 1' – Nobbie

+0

Ваш скрипт либо не выполнил, либо не вышел изящно. Я обновил свой ответ с небольшим количеством кода, чтобы увидеть результат, который поможет вам определить, что пошло не так. Если у вас все еще есть проблемы, вы должны принять мой ответ, так как он решил ваш вопрос и задал новый вопрос. –

+0

Спасибо за ответ, но он все еще не работает. Это ошибка, которую он печатает в исключении 'b''' – Nobbie

Смежные вопросы