我编写了一个Python脚本来运行属于第三方程序的终端命令。
import subprocess
DETACHED_PROCESS = 0x00000008
command = 'my cmd command'
process = subprocess.Popen(
args=command,
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
encoding="utf-8",
creationflags=DETACHED_PROCESS
)
code = process.wait()
print(process.stdout.readlines())
# Output: []
这个脚本基本上成功地运行了命令,但是我想打印输出,但是process.stdout.readlines()
打印了一个空列表。
由于第三方程序的终端命令,我需要使用creationflags运行子进程。
我也试过creationflags=subprocess.CREATE_NEW_CONSOLE
。它工作,但过程太长,因为第三方程序的终端命令。
有没有办法使用creationflags=0x00000008
打印子进程的输出?
顺便说一下,我可以使用subprocess.run
等来运行命令,但我想知道我是否可以修复这个问题。
感谢您抽出宝贵时间!
编辑:
很抱歉我忘了说如果我把"dir"
等写为命令,我可以得到输出。但是,当我写这样的命令时,我不能得到任何输出:command = '"program.exe" test'
1条答案
按热度按时间luaexgnf1#
我不确定这是否适用于您的特定情况,但是当我需要捕获子流程输出时,我使用
subprocess.check_output
。它只返回一个stdout字符串。