如何从 C++ 程序运行 python 脚本?

2023-12-06

我已经能够找到一些我知道的东西,你需要包含 Python.h 并且你需要有

Py_Initialize();
//code that runs the python script
Py_Finalize();

打开和关闭解释器,但中间部分让我迷失了。我能找到的关于该主题的大多数信息都使用带有一些参数的 Py_SimpleString() 命令。我已经搜索了一段时间,但找不到任何文档可以清楚地解释该命令正在做什么或如何准确使用它。

我不一定需要 python 脚本直接将值传递给 C++ 程序。它正在写入一个文本文件,C++ 可以解析该文本文件以获取它需要的部分。我只需要让 .py 文件运行并执行其功能。

任何帮助表示赞赏!


从 C++ 程序中运行 Python 脚本的最简单方法是通过 PyRun_SimpleString(),如示例所示这个网页:

#include <Python.h>

int main(int argc, char *argv[])
{
  Py_SetProgramName(argv[0]);  /* optional but recommended */
  Py_Initialize();
  PyRun_SimpleString("from time import time,ctime\n"
                     "print 'Today is',ctime(time())\n");
  Py_Finalize();
  return 0;
}

如果您想运行存储在 .py 文件中的脚本,而不是直接以字符串形式提供 Python 源文本,您可以调用PyRun_SimpleFile() 而不是 PyRun_SimpleString()。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 C++ 程序运行 python 脚本? 的相关文章

随机推荐

  • 在Scheme中柯里化一个函数n次

    我无法找到一种将函数柯里化指定次数的方法 也就是说 我给函数一个自然数 n 和一个函数 fun 并且它对函数进行柯里化 n 次 例如 curry n fun 该功能和可能的应用程序是 curry 4 1 2 3 4 这将产生 10 我真的不
  • 将文本转换为 PDF

    我有一大串文本 显然是 PDF 文件的原始数据 我需要将其重新转换为 PDF 目前 我正在将字符串读入 StringBuffer 但如果需要 我可以更改它 从那里我尝试将其写入文件并更改扩展名 我真的希望这能起作用 但我有点知道它不会 我尝
  • GDB断点后如何恢复指令

    我读到 GDB 将 int 3 操作码 CC 放在目标程序内存中的所需地址处 Si这个操作是擦除程序存储器中的一条指令 1字节 我的问题是 当程序继续时 GDB 如何以及何时替换原始操作码 当我在 GDB 中输入 disassemble 时
  • Java 8 Update 71 后 Eclipse Mars 无法启动

    我昨天安装了 Java 8 Update 71 但之后我的 Eclipse 无法启动 Windows 仅在鼠标上显示一个简短的加载符号 仅此而已 在我使用 Java 8 Update 66 之前 一切都运行良好 所以我尝试用 clean参数
  • 如何找到下一个工作日:MATLAB

    鉴于日期 20170203 yyyymmdd 我如何找到下一个工作日 即本例中的 20170206 date datenum 20170203 yyyymmdd NBD nextBusinessDay date NBD 06 Feb 201
  • 绝对定位的容器不会扩展宽度以适应弹性盒内容[重复]

    这个问题在这里已经有答案了 我有一个flexbox在绝对定位的父级内部div 我期望flexbox有一个computed width 导致父 div 展开 但这不会发生 父 div 有一定的宽度 但不足以容纳 Flexbox 鉴于 Flex
  • 无法正确绑定 observables 的 observableArray

    我有以下代码应该绑定 observables 的 observableArray
  • Selenium 和 ChromeDriver:会话未创建,无法连接到渲染器

    我正在尝试通过 Mac 上的 Webdriver io Selenium 和 ChromeDriver 运行自动化测试 我正在使用所有相关软件的最新版本 硒3 9 1 Chrome 驱动程序 2 35 铬64 操作系统 macOS High
  • 如何在 iframe 内引用 iframe

    我想引用另一个 iframe 内的 iframe div class playButton Play div div class flex active slide document document div
  • 从 HashSet 中选取“任何”项目非常慢 - 如何快速做到这一点?

    我目前正在使用贪婪算法做很多工作 它们不关心索引等 它们只适用于组 集合 但我发现 85 的执行时间都花在尝试从 HashSet 中选择一个项目上 根据 MSDN 文档 HashSet 类提供高性能的集合操作 一套 是一个不包含重复元素的集
  • 复制/移动未实现复制的字段

    费里斯船长有一张地图 seven seas png 他隐藏了多个宝藏的区域 在坐标 5 7 和 7 9 处 他想为每件宝藏创建一个单独的藏宝图 原始地图不应更改 他决定使用 Rust 和图像箱为了这 extern crate image u
  • 带参数的 .html 漂亮 URL

    我有一个网站 仅包含 html前端 我想要漂亮的 URL 我的目标是创造这样的东西 http test com mypage html gt http test com mypage http test com mypage1 html g
  • Web 组件/HtmlElement:单元测试

    我正在尝试测试一个网络组件 这是我的项目结构 package json src app js index html test hello world test html 这是我的工作代码 class HelloWorld extends H
  • C# 并排合并两个或多个文本文件

    using StreamWriter writer File CreateText FinishedFile int lineNum 0 while lineNum lt FilesLineCount Min for int i 0 i l
  • C# 中迭代​​树的微优化

    我正在研究一个massive数字处理项目 从一开始我就一直在优化一切 因为我知道这很重要 在进行性能分析时 我的代码几乎 40 的生命时间都花在一个函数上 二叉树迭代器 public ScTreeNode GetNodeForState i
  • 如何在 VBScript 中使用 Excel 工作表函数?

    我需要计算列中活动单元格的数量AExcel 的 我可以在 Excel VBA 中使用 worksheetfunction countA 轻松实现此目的 但无法在 VBScript 中获得相同的结果 我尝试过以下代码 Dim objXl ob
  • 如何在第一个 selectOneMenu 更改时加载第二个 selectOneMenu? [复制]

    这个问题在这里已经有答案了 我有2个
  • UserScripts & Greasemonkey:调用网站的 JavaScript 函数

    我正在为 Firefox 和 Chrome 创建一个 UserScript 扩展 并且尝试使用网站 JavaScript 中的一些代码 例如 function myFunction return Grooveshark playNextSo
  • 是否有 Ansible 函数可以将日期字符串转换为纪元?

    我正在寻找将日期输入变量转换为纪元 我没有看到 Ansible 函数可以帮助我解决这个问题 For eg 日期是一个格式变量 m d Y H M S 这需要转换为纪元秒 Ansible 有一个to datetime过滤 记录here 该页面
  • 如何从 C++ 程序运行 python 脚本?

    我已经能够找到一些我知道的东西 你需要包含 Python h 并且你需要有 Py Initialize code that runs the python script Py Finalize 打开和关闭解释器 但中间部分让我迷失了 我能找