将Python脚本的输出链接到C ++程序的输入
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将Python脚本的输出链接到C ++程序的输入相关的知识,希望对你有一定的参考价值。
我的python脚本将模拟到数字转换器的值输出到Raspberry Pi的控制台。为了操作这些数据,我需要将此输出发送到C ++文件的输入。我应该将我的python代码包装为C ++并将其包含在程序中,还是有更简单的方法直接传递数据?
要传递这么少量的数据,我建议使用bash管道。这似乎是最简单的方法。
python script.py | ./cpp_prog
我的第一个想法就是将你的脚本嵌入到C ++程序中。 Python本身建议使用this。这将是最干净的方式。因此,当您从ADC获取新数据时,您可以控制。
摘自链接:
嵌入Python的最简单形式是使用非常高级的接口。此接口旨在执行Python脚本,而无需直接与应用程序交互。例如,这可以用于对文件执行某些操作。
#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
"
"print 'Today is',ctime(time())
");
Py_Finalize();
return 0;
}
应在Py_Initialize()之前调用Py_SetProgramName()函数,以通知解释器有关Python运行时库的路径。接下来,使用Py_Initialize()初始化Python解释器,然后执行打印日期和时间的硬编码Python脚本。之后,Py_Finalize()调用关闭解释器,然后关闭程序结束。在实际程序中,您可能希望从其他源获取Python脚本,可能是文本编辑器例程,文件或数据库。通过使用PyRun_SimpleFile()函数可以更好地从文件中获取Python代码,这样可以省去分配内存空间和加载文件内容的麻烦。
等等等等。这将指导您的方式。祝你的项目顺利=)
如果你的意思是在运行时,可能最简单的方法是通过std::system
调用
来自https://en.cppreference.com/w/cpp/utility/program/system:
#include <cstdlib>
#include <fstream>
#include <iostream>
int main()
{
std::system("ls -l >test.txt"); // execute the UNIX command "ls -l >test.txt"
std::cout << std::ifstream("test.txt").rdbuf();
}
可能的输出:
total 16
-rwxr-xr-x 1 2001 2000 8859 Sep 30 20:52 a.out
-rw-rw-rw- 1 2001 2000 161 Sep 30 20:52 main.cpp
-rw-r--r-- 1 2001 2000 0 Sep 30 20:52 test.txt
而只是运行你的python而不是。
以上是关于将Python脚本的输出链接到C ++程序的输入的主要内容,如果未能解决你的问题,请参考以下文章