我有一个名为class.py的python脚本,其中包含一行:
class.py:
print "Hello World"
Run Code Online (Sandbox Code Playgroud)
我在子进程中运行它,就像这样.
run_subprocess.py:
import subprocess
p = subprocess.Popen(["python", "class.py"], stdin=subprocess.PIPE, shell=True,
stdout=subprocess.PIPE)
a = p.communicate()
print a
Run Code Online (Sandbox Code Playgroud)
当我运行它(在Mac上)时,我得到一个空的命令字符串:
$ python run_subprocess.py
('', None)
Run Code Online (Sandbox Code Playgroud)
当我用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)
Run Code Online (Sandbox Code Playgroud)
为什么?如何stdout在运行子进程时获取内容shell=True?
谢谢,凯文
| 归档时间: |
|
| 查看次数: |
3388 次 |
| 最近记录: |