У меня есть скрипт Python под названием class.py с одной строкой:
class.py:
print "Hello World"
Я запускаю его в подпроцессе, вот так.
run_subprocess.py:
import subprocess
p = subprocess.Popen(["python", "class.py"], stdin=subprocess.PIPE, shell=True,
stdout=subprocess.PIPE)
a = p.communicate()
print a
Когда я запускаю это (на Mac), я получаю пустую командную строку:
$ python run_subprocess.py
('', None)
Когда я запускаю это с shell = False, я получаю содержимое stdout:
run_subprocess.py:
import subprocess
p = subprocess.Popen(["python", "class.py"], stdin=subprocess.PIPE, shell=False,
stdout=subprocess.PIPE)
a = p.communicate()
print a
$ python run_subprocess.py
('hello world\n', None)
Почему? Как я могу получить содержимое stdout
при запуске подпроцесса с shell=True
?
Спасибо,
Kevin