如何用python多次调用exe文件运行不同的结果
如何用python多次调用exe文件运行不同的结果
林妙可 隆胸
有个C++项目是读取配置参数文件并打印对应的结果,后来需要多次修改配置文件并运行,于是想到写个python脚本执行这一过程,今天通过本文给大家分享python多次调用exe文件运行不同的结果,感兴趣的朋友一起看看吧
摘要: 有个C++项目是读取配置参数文件并打印对应的结果,后来需要多次修改配置文件并运行,于是想到写个python脚本执行这一过程。
写一个测试项目,项目结构如下:
根目录
main.cpp // C++项目,从file.csv中读取配置文件并打印对应的结果
main.py // 多次循环,修改配置文件file.csv,运行.exe文件并打印
/build/
  // 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 = processmunicate()
    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('')
    print(output, end='')
其中cwd参数的详细解释见 Python cwd (1) -知乎,如果不设置这个参数,.exe文件的运行目录默认是根目录,也就是main.cpp所在的目录,需要用这个参数改成/build/目录,也就是所在的目录。
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 = processmunicate()
    return output.decode('utf-8')
exe_path = 'your/'
output = run_exe(exe_path)
print(output)
到此这篇关于如何用python多次调用exe文件运行不同的结果的文章就介绍到这了

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。