如何用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
相关产品推荐
相关产品推荐

