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

如何用Python循环调用外部exe并将输出存储至Excel?

实现思路与代码示例

1. 调用外部可执行文件

Python的subprocess模块是处理外部进程的标准工具,能轻松调用a.exe并捕获输出。核心用subprocess.run()方法,指定capture_output=True获取stdout/stderr,text=True让输出以字符串返回(避免字节流处理)。

2. 循环多组参数

先把所有要测试的参数对整理成列表,比如params_list = [("arg1_1", "arg2_1"), ("arg1_2", "arg2_2"), ...],然后遍历这个列表,逐个调用exe。

3. 存储结果

  • 先把每次的参数和输出存到一个列表(数组)里,用字典或元组结构,方便后续处理。
  • 要导出到Excel的话,用pandas库最便捷,只需几行代码就能把列表转成DataFrame再导出为xlsx文件。

完整代码示例

基础版(仅存到数组)

import subprocess

# 定义多组测试参数
params_list = [
    ("arg1_val1", "arg2_val1"),
    ("arg1_val2", "arg2_val2"),
    ("arg1_val3", "arg2_val3")
]

# 存储结果的数组
results = []

for arg1, arg2 in params_list:
    try:
        # 调用a.exe,捕获输出
        result = subprocess.run(
            ["a.exe", arg1, arg2],
            capture_output=True,
            text=True,
            check=True  # 如果exe执行失败(返回非0),抛出异常
        )
        # 提取输出,去除多余换行符
        output = result.stdout.strip()
        # 把参数和输出存入结果数组
        results.append({
            "arg1": arg1,
            "arg2": arg2,
            "output": output
        })
    except subprocess.CalledProcessError as e:
        # 处理执行失败的情况,记录错误信息
        results.append({
            "arg1": arg1,
            "arg2": arg2,
            "output": f"执行失败: {e.stderr.strip()}"
        })

# 打印结果数组
for item in results:
    print(item)

进阶版(导出到Excel)

先安装依赖包:

pip install pandas openpyxl

修改代码,在收集完结果后导出:

import subprocess
import pandas as pd

# 定义多组测试参数
params_list = [
    ("arg1_val1", "arg2_val1"),
    ("arg1_val2", "arg2_val2"),
    ("arg1_val3", "arg2_val3")
]

results = []

for arg1, arg2 in params_list:
    try:
        result = subprocess.run(
            ["a.exe", arg1, arg2],
            capture_output=True,
            text=True,
            check=True
        )
        output = result.stdout.strip()
        results.append({
            "arg1": arg1,
            "arg2": arg2,
            "output": output
        })
    except subprocess.CalledProcessError as e:
        results.append({
            "arg1": arg1,
            "arg2": arg2,
            "output": f"执行失败: {e.stderr.strip()}"
        })

# 转成DataFrame并导出到Excel
df = pd.DataFrame(results)
df.to_excel("exe_results.xlsx", index=False, engine="openpyxl")
print("结果已导出到exe_results.xlsx")

注意事项

  • 如果a.exe不在Python脚本的同一目录下,要传入完整路径,比如["C:/path/to/a.exe", arg1, arg2]。
  • 若exe的输出包含非UTF-8编码的字符,需指定encoding参数,比如encoding="gbk"(Windows下常见)。
  • check=True会在exe返回非0状态码时抛出异常,适合严格检查执行结果的场景;如果不需要,可去掉并自行判断result.returncode。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 16:02:38