【发布时间】:2019-01-30 13:32:34
【问题描述】:
我为示例编写了以下程序--
from subprocess import *
import shlex
def pipe(command):
proc = Popen(shlex.split(command), stdout=PIPE, stderr=PIPE)
out, err = proc.communicate()
print "output:", out # blank
print "errors:", err # expected output
#return str(err) # returns expected output
return str(out) # returns blanked output
out = pipe('python --version')
print 'pipe returned ----- %s' % out
其实err持有的是期望值,而不是out。
- 这段代码有什么问题?
- subprocess 模块是否仅用于处理基本操作系统的命令?
【问题讨论】:
-
您可以尝试其他命令吗?像 Windows 上的
dir或基于 unix 的系统上的ls?你可能只是运气不好,python 会在标准错误中打印版本信息 -
“基本操作系统的命令”是什么意思?您可以将任何进程作为子进程运行。
-
是 Ubuntu 18.04 @tripleee
标签: python subprocess pipe