网络编程
位置:首页>> 网络编程>> Python编程>> 如何用python多次调用exe文件运行不同的结果

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

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

标签:python,调用,exe文件

摘要: 有个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

0
投稿

猜你喜欢

  • 最近在学习关于Python数据分析与挖掘方面的知识,在学习到Python数据分析工具方面时,需要安装一些第三方扩展库来增强Python的数据
  • Python编写类的时候,每个函数参数第一个参数都是self,一开始我不管它到底是干嘛的,只知道必须要写上。后来对Python渐渐熟悉了一点
  • 前言:图像滤波是图像处理和计算机视觉中最常用、最基本的操作。主要是去除图像中的噪声,因为图像平滑处理过程中往往会使得图像变的模糊,因此又叫模
  • parse_dates : boolean or list of ints or names or list of lists or dic
  • 函数内部的函数只能在函数内部调用,不能在函数外部调用,通过接下来的学习你将会知道为什么会出现这种情况。一、名称空间名称空间(name spa
  •  绘制图形利用opencv提供的绘制图形api可以轻松在图像上绘制各种图形,比如直线,矩形,圆,椭圆等图形。line(img,pt
  • UPA2008于2008年10月24日在深圳举行,托哥、绿桔应邀主持了一场圆桌会和一场工作坊,以下是圆桌会议《商业价值与用户价值的平衡》的现
  • 前言:数据库备份的重要性不言而喻,特别是在生产环境,任何数据的丢失都可能产生严重的后果。所以,无论什么环境,我们都应该有相应的备份策略来定时
  • 本文是基于opencv将视频和动态图gif保存为图像帧。可以根据输入视频格式的不同,修改第21行。   &nb
  • 这个函数是前几年刚流行小偷程序的时候,偶写来用于小偷程序中截取代码的;可能有些朋友在我以前的代码中看见过了,但没有写用法,现在把调用方法及使
  • scrapy框架之增量式爬虫一 、增量式爬虫什么时候使用增量式爬虫:增量式爬虫:需求 当我们浏览一些网站会发现,某些网站定时的会在原有的基础
  • 学习目标:学会使用windows系统安装MySQL数据库,供大家参考,具体内容如下1.打开浏览器输入SQL官网的下载地址:下载链接2.下载好
  • 原理:建立一个任务队列,然多个线程都从这个任务队列中取出任务然后执行,当然任务队列要加锁,详细请看代码import threadingimp
  • 首先在程序中引入Requests模块import requests一、获取不同类型的响应内容在发送请求后,服务器会返回一个响应内容,而且re
  • 无法打开用户默认数据库,登录失败,这也是SQL Server使用者熟悉的问题之一。在使用企业管理器、查询分析器、各类工具和应用软件的时候,只
  • ASP(英文全称Active Server Pages)是一个编程环境,在其中,可以混合使用HTML、脚本语言以及组件来创建服务器端功能强大
  • 描述max() 方法返回给定参数的最大值,参数可以为序列。语法以下是 max() 方法的语法:max( x, y, z, .... )参数x
  • 前言很多时候我们要用到图片上传功能,如果图片一直用放在别的网站上,通过加载网址的方式来显示的话其实也挺麻烦的,我们通过使用 django-f
  • 1.文件介绍python操作文件1.1python文件的基本操作打开文件关键字open语法格式:open('文件路径',&#
  • 作为一个数据分析师,应该信奉一句话——“一图胜千言”。不过这里要说的并不是数据可视化,而是一款全民向的产品形态——表情包!!!!表情包不仅仅
手机版 网络编程 asp之家 www.aspxhome.com