如何用python多次调用exe文件运行不同的结果

作者:找不到服务器zhn 时间:2023-07-08 03:01:24 

摘要: 有个C++项目是读取配置参数文件并打印对应的结果,后来需要多次修改配置文件并运行,于是想到写个python脚本执行这一过程。
写一个测试项目,项目结构如下:

根目录
main.cpp // C++项目,从file.csv中读取配置文件并打印对应的结果
main.py // 多次循环,修改配置文件file.csv,运行.exe文件并打印
/build/
 untitled.exe // C++生成的.exe文件
/data/
 file.csv // C++读取的配置文件

配置文件file.csv如下

da, 4
db, 1.1
dc, 1.2

C++读取配置文件测试代码main.cpp如下

#include <iostream>
#include <vector>
#include <fstream>
#include <sstream>
#include <map>
using namespace std;
map<string, double> readKeyValuePairs(const string& fileName) {
   map<string, double> myMap;
   ifstream file(fileName);
   string line;
   while (getline(file, line)) {
       stringstream ss(line);
       string key;
       double value;
       getline(ss, key, ',');
       ss >> value;
       myMap[key] = value;
   }
   return myMap;
}
int main() {
   map<string, double> ans = readKeyValuePairs("../data/file.csv");
   cout << ans.size() << "," << ans["da"]+ans["db"] << ";    " << endl;
}

代码中注意配置文件与生成的.exe文件的相对位置。其中ans.size()用于判断是否正确读到了数据。
下面的代码用于多次修改配置文件,运行.exe文件并打印出.exe文件的运行结果。

import subprocess
def run_exe(exe_path):
   process = subprocess.Popen(exe_path, stdout=subprocess.PIPE, cwd='build')
   output, error = process.communicate()
   return output.decode('utf-8')
for n in range(5):
   with open('data/file.csv', mode='w') as txtfile:
       print(f'da, {n}\ndb, 1.1\ndc, 1.2', file=txtfile)
   output = run_exe('build/untitled.exe')
   print(output, end='')

其中cwd参数的详细解释见 Python cwd (1) -知乎,如果不设置这个参数,.exe文件的运行目录默认是根目录,也就是main.cpp所在的目录,需要用这个参数改成/build/目录,也就是untitled.exe所在的目录。
python代码运行结果如下

3,1.1;    
3,2.1;    
3,3.1;
3,4.1;
3,5.1;  

下面的代码是chatGPT生成的python调用exe文件的原始代码

import subprocess
def run_exe(exe_path):
   process = subprocess.Popen(exe_path, stdout=subprocess.PIPE)
   output, error = process.communicate()
   return output.decode('utf-8')
exe_path = 'your/exe_file.exe'
output = run_exe(exe_path)
print(output)

来源:https://blog.csdn.net/qq_34288751/article/details/130536455

标签:python,调用,exe文件
0
投稿

猜你喜欢

  • Python初学者需要注意的事项小结(python2与python3)

    2021-08-16 19:49:26
  • Python数据清洗&预处理入门教程

    2021-08-15 20:14:24
  • mysql基础架构教程之查询语句执行的流程详解

    2024-01-28 21:05:47
  • Vue中的 DOM与Diff详情

    2023-07-02 16:32:37
  • matplotlib中legend位置调整解析

    2023-07-17 03:00:44
  • 保存透明gif时出现锯齿解决法

    2008-06-26 18:10:00
  • 惊云JS随机排序程序随机显示信息-每次新闻显示顺序都不一样

    2024-04-22 12:51:16
  • vue面试之new Vue的时候到底做了什么

    2024-06-05 15:31:27
  • Oracle Index 的三个问题

    2010-07-26 12:53:00
  • 教你一分钟在win10终端成功安装Pytorch的方法步骤

    2023-09-01 19:32:38
  • Python asyncore socket客户端开发基本使用教程

    2021-01-25 11:06:39
  • Python使用迭代器捕获Generator返回值的方法

    2022-11-25 09:40:35
  • Python 下载及安装详细步骤

    2021-05-17 05:24:24
  • Tkinter组件实现Radiobutton的示例

    2022-08-01 00:23:24
  • 分析mysql中一条SQL查询语句是如何执行的

    2024-01-19 15:43:59
  • Python装饰器实现方法及应用场景详解

    2022-04-30 22:57:49
  • 实现文字放大效果Javascript源码

    2010-03-17 20:46:00
  • Asp 日期格式化问题

    2011-03-31 10:47:00
  • Python编程pygal绘图实例之XY线

    2021-02-17 10:42:10
  • python生成随机红包的实例写法

    2021-02-20 12:30:33
  • asp之家 网络编程 m.aspxhome.com