2015-05-28 2 views
3

Я думаю, что моя проблема довольно прямолинейна, однако я не могу найти способ ее решить. Мой процесс следующий:Отправьте значение с C++ на python

  1. Я запустил скрипт Python: Test.py.
  2. В этом скрипте я вызываю программу на C++.

Test.py:

RunCprogram = "./Example" 
os.system(RunCprogram) 

Я хочу, чтобы ./Example исполняемым вернуть двойной, который можно использовать позже в моем сценарии Python. Каков наилучший способ сделать это?

+0

Вы можете сделать 'Example' печатать данные в' stdout' затем захватите его с помощью модуля 'subprocess' Python – ForceBru

ответ

2

Вот небольшой пример, основанный на @ForceBru ответ:

example.cpp, компилировать с g++ example.cpp -o example

#include <iostream> 

int main() { 
    std::cout << 3.14159 ; 
    return 0; 
} 

example.py

#!/usr/local/bin/python 

import subprocess 

res = subprocess.check_output(["./example"], universal_newlines=True) 

print "The value of 2*" + u"\u03C0" + " is approximately " + str(2*float(res)) 
+0

Это работает отлично. Спасибо – JbGT

3

Прежде всего, удостоверьтесь, что Example выводит желаемые данные в stdout. Если это не так, вы ничего не можете с этим поделать.

Затем используйте модуль subprocess Python.

import subprocess 

res=subprocess.check_output(["./Example"], universal_newlines=True) 

Если res содержит символ новой строки в конце, удалить его с res.strip(). Наконец, литой res в float с float(res).

Смежные вопросы