2012-03-06 57 views
1

我有一段生成數據的C++代碼。我想將數據公開給Python。但它不像聽起來那麼微不足道......將一段C++代碼包裝到Python中

說這個C++編譯成二進制文件cppcode。該框架建立的複雜的方式。因爲,我只能運行代碼

./cppcode {command line arguments} 

裏面cppcode它會產生,我想從Python來訪問數據。我知道如果我能以某種方式重寫程序作爲

CppClass cpp; 
cpp.run(args); 

然後我就可以換了升壓的Python CppClass,建立一個實例,帶參數運行,並生成訪問數據。

但現在,我只能運行代碼./cppcode {command line arguments}

我不能叫./cppcode從Python的,因爲./cppcode結束後,它的內存將被系統回憶,我做不到再也看不到Python了。有沒有辦法解決這個問題?

我可以想到:(1)讓./cppcode將數據轉儲到磁盤並讓python讀取它。 (2)將數據轉儲到標準輸出並輸入python腳本。但無論哪種方式,我必須在Python中進行一些字符串解析,可能會很慢。有沒有辦法避開它?

+0

我一起去'(2)'首先,這應該是很微不足道的,因爲你可以控制你的數據的格式化。只需輸出一個簡單的格式,如逗號分隔值,可以使用'string.split()'快速解析。如果結果太慢,我會考慮使用諸如Boost Python之類的東西,這將需要更多的工作來實現。 – 2012-03-06 14:56:40

+0

請謝謝我們,回饋社區。 – 2012-03-06 14:57:12

+0

@NiklasB .:逗號分隔值比這更復雜一些,因爲它們可能包含包含逗號的字符串。 Python確實有一個'csv'模塊,它可以很好地處理這個問題。 – 2012-03-06 15:40:00

回答