繁体   English   中英

将Python脚本的输出链接到C ++程序的输入

[英]Linking the output of a Python script to the input of a C++ program

我的python脚本将模拟到数字转换器的值输出到Raspberry Pi的控制台。 为了处理这些数据,我需要将此输出发送到C ++文件的输入。 我应该将python代码包装为C ++并将其包含在程序中,还是有更简单的方法直接传递数据?

为了传递如此少量的数据,我建议使用bash管道。 这似乎是最简单的方法。

python script.py | ./cpp_prog

我的第一个想法是将您的脚本嵌入到C ++程序中。 Python本身建议这样做 这将是最干净的方法。 因此,您可以控制是否以及何时从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\n"
                     "print 'Today is',ctime(time())\n");
  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即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM