翼度科技»论坛 编程开发 python 查看内容

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

2

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
摘要: 有个C++项目是读取配置参数文件并打印对应的结果,后来需要多次修改配置文件并运行,于是想到写个python脚本执行这一过程。
写一个测试项目,项目结构如下:
  1. 根目录main.cpp // C++项目,从[code]file.csv
复制代码
中读取配置文件并打印对应的结果main.py // 多次循环,修改配置文件
  1. file.csv
复制代码
,运行.exe文件并打印/build/ untitled.exe // C++生成的.exe文件/data/ file.csv // C++读取的配置文件[/code]配置文件
  1. file.csv
复制代码
如下
  1. da, 4db, 1.1dc, 1.2
复制代码
C++读取配置文件测试代码
  1. main.cpp
复制代码
如下
  1. #include <iostream>
  2. #include <vector>
  3. #include <fstream>
  4. #include <sstream>
  5. #include <map>
  6. using namespace std;
  7. map<string, double> readKeyValuePairs(const string& fileName) {
  8.     map<string, double> myMap;
  9.     ifstream file(fileName);
  10.     string line;
  11.     while (getline(file, line)) {
  12.         stringstream ss(line);
  13.         string key;
  14.         double value;
  15.         getline(ss, key, ',');
  16.         ss >> value;
  17.         myMap[key] = value;
  18.     }
  19.     return myMap;
  20. }
  21. int main() {
  22.     map<string, double> ans = readKeyValuePairs("../data/file.csv");
  23.     cout << ans.size() << "," << ans["da"]+ans["db"] << ";    " << endl;
  24. }
复制代码
代码中注意配置文件与生成的.exe文件的相对位置。其中
  1. ans.size()
复制代码
用于判断是否正确读到了数据。
下面的代码用于多次修改配置文件,运行.exe文件并打印出.exe文件的运行结果。
  1. import subprocess
  2. def run_exe(exe_path):
  3.     process = subprocess.Popen(exe_path, stdout=subprocess.PIPE, cwd='build')
  4.     output, error = process.communicate()
  5.     return output.decode('utf-8')
  6. for n in range(5):
  7.     with open('data/file.csv', mode='w') as txtfile:
  8.         print(f'da, {n}\ndb, 1.1\ndc, 1.2', file=txtfile)
  9.     output = run_exe('build/untitled.exe')
  10.     print(output, end='')
复制代码
其中
  1. cwd
复制代码
参数的详细解释见 Python cwd (1) -知乎,如果不设置这个参数,.exe文件的运行目录默认是根目录,也就是
  1. main.cpp
复制代码
所在的目录,需要用这个参数改成
  1. /build/
复制代码
目录,也就是
  1. untitled.exe
复制代码
所在的目录。
python代码运行结果如下
  1. 3,1.1;    3,2.1;    3,3.1;3,4.1;3,5.1;  
复制代码
下面的代码是chatGPT生成的python调用exe文件的原始代码
  1. import subprocess
  2. def run_exe(exe_path):
  3.     process = subprocess.Popen(exe_path, stdout=subprocess.PIPE)
  4.     output, error = process.communicate()
  5.     return output.decode('utf-8')
  6. exe_path = 'your/exe_file.exe'
  7. output = run_exe(exe_path)
  8. print(output)
复制代码
到此这篇关于如何用python多次调用exe文件运行不同的结果的文章就介绍到这了,更多相关python多次调用exe文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

来源:https://www.jb51.net/article/284052.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具