You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中为subprocess.run调用的解码器进程传递回车键

问题与解决方案

问题描述

我尝试通过Python脚本逐个将日志文件传入解码器EXE以生成CSV文件,使用的代码如下:

p = subprocess.run(["wine", DECODER_EXE_PATH, str(decompressed_file_path)], capture_output=True, text=True)

遇到的问题:每个文件解码完成后,解码器EXE会等待按下回车键才会退出,导致脚本处理完第一个文件后就卡住无法继续执行。

另外,在Windows系统中直接将日志文件拖放到解码器时,解码完成后命令提示符会显示:「Decode complete, press Enter to exit...」(即解码完成,按回车键退出)。

解决方法

方法1:通过subprocess.run的input参数自动传入回车

直接在subprocess.run中添加input="\n"参数,让脚本自动向解码器发送回车键:

p = subprocess.run(
    ["wine", DECODER_EXE_PATH, str(decompressed_file_path)],
    capture_output=True,
    text=True,
    input="\n"  # 自动传递回车键
)

如果解码器存在多次等待回车的场景,可以传入多个换行符,比如input="\n\n"。

方法2:使用subprocess.Popen配合communicate()处理交互

如果需要更灵活地控制输入输出,可以使用Popen对象的communicate()方法:

import subprocess

p = subprocess.Popen(
    ["wine", DECODER_EXE_PATH, str(decompressed_file_path)],
    stdin=subprocess.PIPE,
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE,
    text=True
)
# 发送回车键并获取执行结果
stdout, stderr = p.communicate(input="\n")

内容的提问来源于stack exchange,提问作者RKIDEV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 08:47:10