繁体   English   中英

Python - 带有 creationflags (0x00000008) 的子进程 - 进程结束后如何获得 output? (视窗)

[英]Python - subprocess with creationflags (0x00000008) - How to get output after process ends? (Windows)

提示:本站为国内最大中英文翻译问答网站,提供中英文对照查看,鼠标放在中文字句上可显示英文原文

我写了一个 Python 脚本来运行属于第 3 方程序的终端命令。

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: []

这个脚本基本上成功地运行了命令。 但是,我想打印 output 但process.stdout.readlines()打印了一个空列表。

由于第 3 方程序的终端命令,我需要使用 creationflags 运行子进程。

我也试过creationflags=subprocess.CREATE_NEW_CONSOLE 它可以工作,但由于第 3 方程序的终端命令,过程花费的时间太长。

有没有办法使用creationflags=0x00000008打印子进程的 output ?

顺便说一句,我也可以使用subprocess.run等来运行命令,但我想知道我是否可以解决这个问题。

感谢您的时间!

编辑:

对不起,我忘了说如果我写"dir"等作为命令,我可以获得 output。 但是,当我编写如下命令时,我无法获得任何 output: command = '"program.exe" test'

我不确定这是否适用于您的特定情况,但是当我需要捕获子进程 output 时,我使用subprocess.check_output

import subprocess

DETACHED_PROCESS = 0x00000008

command = 'command'


process = subprocess.check_output(
    args=command,
    shell=True,  
    stderr=subprocess.STDOUT,
    encoding="utf-8",
    creationflags=DETACHED_PROCESS  
)

print(process)

这只会返回一串标准输出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2023 STACKOOM.COM