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

如何使用Python subprocess模块将CSV文件输入值传递给exe可执行文件

问题核心原因

你当前的代码将CSV完整内容作为命令行启动参数传递给exe,但该exe为交互式程序,运行过程中需要从标准输入(stdin)逐行读取输入参数,而非启动时的命令行参数,因此参数无法被正确识别。

修正后的代码示例

import subprocess
import csv

# 读取CSV内容,每行对应一个输入参数,末尾添加换行符模拟手动回车操作
input_content = []
with open(r'C:\Users\NH.csv', 'r', encoding='gbk') as f:
    csv_reader = csv.reader(f)
    for row in csv_reader:
        # 若单条输入包含多个空格分隔的参数,可调整为' '.join(row) + '\n'
        input_content.append(row[0].strip() + '\n')
input_str = ''.join(input_content)

# 启动目标exe,配置标准输入管道
proc = subprocess.Popen(
    [r'C:\Users\NGP.exe'],
    stdin=subprocess.PIPE,
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE,
    text=True,
    encoding='gbk',
    shell=False
)

# 传入所有输入参数,等待程序执行完成
stdout, stderr = proc.communicate(input=input_str)

# 可选:打印运行日志排查问题
print("程序运行输出:", stdout)
if stderr:
    print("程序运行报错:", stderr)

注意事项

  • 若Windows下运行出现中文乱码、参数识别错误,可调整CSV读取和Popen的encoding参数为utf-8或对应程序使用的编码
  • 不要保留shell=True配置,除额外安全风险外,还可能导致标准输入传递链路多一层中转,出现不可预期的异常
  • 若CSV每行包含多个需要同时输入的参数,可将行内所有字段用空格拼接后再加换行符即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:09:02