我正在使用Python 3.5.1和Windows 10.我无法将subprocess
输出到屏幕上。让我们从简单的事情开始:
import subprocess
process = subprocess.run('echo hi', shell=True, stdout=subprocess.PIPE)
当我运行我的python模块时,我想在Python Shell中打印'hi'。该脚本运行并且不会返回错误,但它不会向屏幕输出任何内容。
我也尝试了许多不同风格的subprocess
(即Popen
),但仍然没有运气。我觉得这与我的Windows / Python环境设置方式有关,但我真的不知道从哪里开始。想法?
所以我现在明白我的原始代码示例不应该在屏幕上放任何东西;但是,当我跑步时
import subprocess
p = subprocess.run('echo hi', shell=True)
我没有输出。我跑的时候:
import subprocess
p = subprocess.run('echo hi', shell=True, stdout=subprocess.PIPE)
print(p.stdout)
我确实得到输出。为什么第一个例子不起作用?
答案 0 :(得分:4)
由于您要将输出重定向到PIPE
,因此无法打印到屏幕上。删除管道参数,输出将转到正常stdout
您也可以使用subprocess.call
。
subprocess.call('echo hi', shell=True)
如果要管道输出,则应使用Popen
代替
process = subprocess.Popen('echo hi' shell=True, stdout=subprocess.PIPE)
process.wait()
print process.stdout.read()