【发布时间】:2012-02-04 11:14:54
【问题描述】:
我有一个名为 class.py 的 python 脚本,只有一行:
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)
为什么?使用shell=True 运行子进程时如何获取stdout 的内容?
谢谢, 凯文
【问题讨论】:
标签: python subprocess