从C调用Python脚本并使用其输出
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了从C调用Python脚本并使用其输出,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1509字,纯文字阅读大概需要3分钟。
内容图文
![从C调用Python脚本并使用其输出](/upload/InfoBanner/zyjiaocheng/711/1899ffa14cfb44099943ddd310aae951.jpg)
我想从C调用一个python脚本,并希望将此脚本生成的输出.csv文件重新用于C语言.我在main()中试过这个:
std::string filename = "/home/abc/xyz/script.py";
std::string command = "python ";
command += filename;
system(command.c_str());
这会调用并执行python脚本.
正在执行Python中的打印命令.调用脚本时,屏幕上会打印出一些内容.到现在为止还挺好.但是,它不是创建.csv文件(同一脚本的一部分).
示例:我有一个包含100个条目的training.csv文件.我调用了Python脚本,对脚本几乎没有任何更改,因此training.csv文件现在应该只包含50个条目而不是100个.它被覆盖了.但是,没有这样的事情发生.脚本中的其他命令(打印等)工作正常.
使用fstream和getline通常使用C读取training.csv文件.
知道怎么做(使用Linux)吗?
解决方法:
这是一个从C应用程序中嵌入python模块执行的解决方案.它并不比通过系统调用分支/执行你的python脚本更好或更差,它只是一种不同的方式.是否最佳取决于您的背景和用法.
前段时间我编写了一种将python模块作为插件加载到C应用程序的方法,这里是interesting part.
基本上,你需要#include< Python.h>,然后Py_Initialize()来启动你的python解释器.
然后使用:PyRun_SimpleString(“import sys”);导入sys,你可以通过执行PyRun_SimpleString(‘sys.path.append(“path / to / my / module /”)’)加载你的插件.
要在C和Python之间交换值,事情会变得更难,你必须将所有C对象转换为python对象(在我的脚本中从第69行开始).
然后,您可以使用PyObject_Call_Object(…)调用您的函数,使用您创建的所有python对象作为参数.
您将获得返回值,并转换C对象中的所有值.并且不要忘记所有内存管理!
要结束python解释器,只需调用Py_Finalize()即可.
它看起来确实比它真的更难,但你必须非常小心这样做,因为它可能导致泄漏,安全问题等.
内容总结
以上是互联网集市为您收集整理的从C调用Python脚本并使用其输出全部内容,希望文章能够帮你解决从C调用Python脚本并使用其输出所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。