
[英]Python windows script subprocess continues to output after script ends
[英]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.