我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何用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)

到此这篇关于如何用python多次调用exe文件运行不同的结果的文章就介绍到这了,更多相关python多次调用exe文件内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

摘要: 有个C++项目是读取配置参数文件并打印对应的结果,后来需要多次修改配置文件并运行,于是想到写个python脚本执行这一过程。写一个测试项目,项目结构如下:根目录main.cpp // C++项目,从file.csv中读取配置文件并
2023-05-12

linux如何设置一个二进制文件的 SUID 位 - 运行该文件的用户也被赋予和所有者同样的权限

在Linux中设置SUID位,允许非root用户获得所有者权限以执行二进制文件。步骤包括识别文件、检查所有权、设置SUID位和验证。SUID位带来安全风险,因此仅在必要时使用。撤销SUID位,使用chmodu-s命令。最佳实践包括谨慎使用、定期审查和考虑更安全的授权机制,如sudo或RBAC。
linux如何设置一个二进制文件的 SUID 位 - 运行该文件的用户也被赋予和所有者同样的权限
2024-04-02

如何使用 IN 运算符检查与我们当前使用的数据库不同的数据库中的 MySQL 表列表以及结果集中的表类型?

可以使用 SHOW FULL TABLES 语句来完成。它的语法如下 -语法SHOW FULL TABLES IN db_name在这里,db_name 是我们想要查看表格列表的数据库的名称。示例我们当前正在使用名为‘query’的数据库,
2023-10-22

linux如何一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘

Linux通过以下方法实现应用程序写操作后立即写入磁盘的功能:同步I/O:强制等待数据写入磁盘后继续执行。异步I/O:允许立即继续执行,但可能存在数据丢失风险。文件系统缓存:缓存数据,提高性能,但可能导致数据不一致。文件系统写入屏障:强制将缓存中的更改写入磁盘。数据持久化库:提供更高级的数据持久化特性。选择最佳方法取决于应用程序的具体需求和性能与数据完整性的权衡。建议遵循最佳实践,例如选择合适的写入策略、使用文件系统写入屏障和定期执行sync系统调用,以优化写入性能并保证数据完整性。
linux如何一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘
2024-04-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录