Dav*_*vid 1 python windows shell subprocess python-3.x
我使用的是 Python 3.5.1 和 Windows 10。我无法subprocess将输出显示在屏幕上。所以让我们从简单的事情开始:
import subprocess
process = subprocess.run('echo hi', shell=True, stdout=subprocess.PIPE)
Run Code Online (Sandbox Code Playgroud)
当我运行我的 python 模块时,我希望它在 Python Shell 中打印“hi”。脚本运行并且不会返回错误,但它不会在屏幕上打印任何内容。
我也尝试了许多不同口味的subprocess(ie Popen),但仍然没有运气。我有一种感觉,这与我的 Windows/Python 环境的设置方式有关,但我真的不知道从哪里开始。想法?
所以我现在明白我的原始代码示例不应该在屏幕上放置任何东西;然而,当我跑
import subprocess
p = subprocess.run('echo hi', shell=True)
Run Code Online (Sandbox Code Playgroud)
我没有输出。当我运行时:
import subprocess
p = subprocess.run('echo hi', shell=True, stdout=subprocess.PIPE)
print(p.stdout)
Run Code Online (Sandbox Code Playgroud)
我确实得到了输出。为什么第一个例子不起作用?
它没有打印到屏幕上,因为您将输出重定向到PIPE. 删除管道参数,输出将正常stdout
您也可以使用subprocess.call。
subprocess.call('echo hi', shell=True)
Run Code Online (Sandbox Code Playgroud)
如果要通过管道传输输出,则应Popen改用
process = subprocess.Popen('echo hi', shell=True, stdout=subprocess.PIPE)
process.wait()
print process.stdout.read()
Run Code Online (Sandbox Code Playgroud)
如果要将结果解码为 UTF-8 格式,只需添加 .decode('UTF-8')
process.stdout.read().decode('utf-8')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6931 次 |
| 最近记录: |