subprocess.stdout与壳= True和外壳不同的行为=假
问题描述:
我有一个名为class.py有一行Python脚本:subprocess.stdout与壳= True和外壳不同的行为=假
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)
当我运行这个与外壳=假,我得到标准输出的内容:
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)
为什么?如何在shell=True
上运行子进程时获得stdout
的内容?
谢谢, 凯文