2016-07-06 3 views
1

Недавно я написал следующий код для запуска файла python file1.py из другого кода на Python. Я работаю на Raspberry Pi (с raspian) кодПроблема с Subprocess и popen

Python:

import subprocess 
    subprocess.Popen(['python','./file1.py']) 
    print 'Done' 

Выход:

Done 

file1.py не выполняется, нет другого ответа на экране

file1.py

a=5 
    a=a+5 
    print(a) 

Я искал несколько одинаковый вопрос, но он не работает для меня. Пожалуйста помоги!

Running multiple Python scripts

+1

Почему вы используете 'subprocess.Popen()' для запуска другого скрипта? Можете ли вы не просто импортировать и запускать его нормально? – SiHa

+0

Возможный дубликат эквивалента [python getoutput() в подпроцессе] (http://stackoverflow.com/questions/6657690/python-getoutput-equivalent-in-subprocess) – SiHa

+0

Привет @ amratansh- gupta, почему бы вам не использовать shebang внутри файла 'file1.py'? –

ответ

1

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

Вам нужно будет перенаправить вывод:

p = subprocess.Popen(['python','./file1.py'], stdout=subprocess.PIPE) 
print(p.stdout.read()) 
+0

Большое спасибо, он работает. Однако, если мне file1.py нужны входные значения от пользователя, в этом случае, как я могу изменить это, чтобы я мог ввести необходимые данные? –

0
p=subprocess.Popen(["python","1st.py"],stdin=PIPE,stdout=PIPE) 
print p.communicate()[0] 

ИЛИ

print(p.stdout.read()) 

Общайтесь() возвращает последний обработанный результат процесса, который поможет увидеть результаты