如何用python多次調(diào)用exe文件運(yùn)行不同的結(jié)果
摘要: 有個(gè)C++項(xiàng)目是讀取配置參數(shù)文件并打印對(duì)應(yīng)的結(jié)果,后來(lái)需要多次修改配置文件并運(yùn)行,于是想到寫(xiě)個(gè)python腳本執(zhí)行這一過(guò)程。
寫(xiě)一個(gè)測(cè)試項(xiàng)目,項(xiàng)目結(jié)構(gòu)如下:
根目錄
main.cpp // C++項(xiàng)目,從file.csv中讀取配置文件并打印對(duì)應(yīng)的結(jié)果
main.py // 多次循環(huán),修改配置文件file.csv,運(yùn)行.exe文件并打印
/build/
untitled.exe // C++生成的.exe文件
/data/
file.csv // C++讀取的配置文件
配置文件file.csv如下
da, 4
db, 1.1
dc, 1.2
C++讀取配置文件測(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文件的相對(duì)位置。其中ans.size()用于判斷是否正確讀到了數(shù)據(jù)。
下面的代碼用于多次修改配置文件,運(yùn)行.exe文件并打印出.exe文件的運(yùn)行結(jié)果。
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參數(shù)的詳細(xì)解釋見(jiàn) Python cwd (1) -知乎,如果不設(shè)置這個(gè)參數(shù),.exe文件的運(yùn)行目錄默認(rèn)是根目錄,也就是main.cpp所在的目錄,需要用這個(gè)參數(shù)改成/build/目錄,也就是untitled.exe所在的目錄。
python代碼運(yùn)行結(jié)果如下
3,1.1;
3,2.1;
3,3.1;
3,4.1;
3,5.1;
下面的代碼是chatGPT生成的python調(diào)用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)到此這篇關(guān)于如何用python多次調(diào)用exe文件運(yùn)行不同的結(jié)果的文章就介紹到這了,更多相關(guān)python多次調(diào)用exe文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用python實(shí)現(xiàn)數(shù)據(jù)篩查
一般數(shù)據(jù)篩查可以通過(guò)Python中的pandas庫(kù)來(lái)實(shí)現(xiàn),下面小編就來(lái)為大家介紹一下Python如何利用pandas實(shí)現(xiàn)數(shù)據(jù)篩查,感興趣的小伙伴可以一起學(xué)習(xí)一下2023-10-10
python網(wǎng)絡(luò)編程學(xué)習(xí)筆記(六):Web客戶(hù)端訪(fǎng)問(wèn)
這篇文章主要介紹了python網(wǎng)絡(luò)編程之Web客戶(hù)端訪(fǎng)問(wèn) ,需要的朋友可以參考下2014-06-06
Python快速實(shí)現(xiàn)分列轉(zhuǎn)到行的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用Python快速實(shí)現(xiàn)分列轉(zhuǎn)到行的效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)一下2023-03-03
pytorch-RNN進(jìn)行回歸曲線(xiàn)預(yù)測(cè)方式
今天小編就為大家分享一篇pytorch-RNN進(jìn)行回歸曲線(xiàn)預(yù)測(cè)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01
用python對(duì)excel進(jìn)行操作(讀,寫(xiě),修改)
這篇文章主要介紹了用python對(duì)excel進(jìn)行操作(讀,寫(xiě),修改),幫助大家更好的利用python處理表格,感興趣的朋友可以了解下2020-12-12
python逐行讀寫(xiě)txt文件的實(shí)例講解
下面小編就為大家分享一篇python逐行讀寫(xiě)txt文件的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
基于Python實(shí)現(xiàn)批量讀取大量nc格式文件并導(dǎo)出全部時(shí)間信息
這篇文章主要為大家詳細(xì)介紹了如何基于Python語(yǔ)言,逐一讀取大量.nc格式的多時(shí)相柵格文件并導(dǎo)出其中所具有的全部時(shí)間信息的方法,需要的可以參考下2024-01-01
Python-re中search()函數(shù)的用法詳解(查找ip)
這篇文章主要介紹了Python-re中search()函數(shù)的用法-----查找ip,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03

