【发布时间】:2019-05-20 13:27:23
【问题描述】:
我正在使用 subprocess.run 运行命令并将输出打印到文件。
我能够为“python --version”打印正确的输出,因为答案是“Python 3.6.5”,但是当我为“java -version”运行相同的命令时,文本文件中没有输出,但是它反映在控制台中。
可能是因为'java -version'的输出分布在三行!
import subprocess
import os
import sys
sys.stdout = open('outputCS.txt','wt')
result = subprocess.run('python --version', stdout=subprocess.PIPE)
print(result.stdout.decode('utf-8'))
【问题讨论】:
-
java -version输出到标准错误,而不是标准输出。 -
@interjay 是的,在这种情况下,您需要将
stderr=subprocess.PIPE作为参数添加到subprocess.run()以捕获它。之后您可以使用result.stderr.decode('utf-8')访问它,就像您目前使用stdout所做的一样 -
解决了这个问题..谢谢!! @GreenCloakGuy
标签: python python-3.x