python怎么在文件中添加內(nèi)容 怎樣在python程序中嵌入C程序片段?
怎樣在python程序中嵌入C程序片段?在c中嵌入python有一些步驟。安裝python程序,以便可以使用python頭文件和庫(kù)。添加 "Python.h "頭文件鏈接到我們編寫的源文件,并將其鏈
怎樣在python程序中嵌入C程序片段?
在c中嵌入python有一些步驟。
安裝python程序,以便可以使用python頭文件和庫(kù)。
添加 "Python.h "頭文件鏈接到我們編寫的源文件,并將其鏈接到 "python**。lib "庫(kù)(需要明確這個(gè)庫(kù)是靜態(tài)庫(kù)還是導(dǎo)出庫(kù))。
掌握并理解一些python C語(yǔ)言API,用于我們的C程序。
一些常用的C API函數(shù)
在理解以下函數(shù)之前,有必要知道**PyObject***指針。python中幾乎所有的對(duì)象都由這個(gè)指針指示。
py _ Initialize()ampampPy _ Finalize()
在調(diào)用任何python c函數(shù)之前需要調(diào)用的函數(shù)初始化 "用于初始化python模塊,大概是加載初始化加載dll。相應(yīng)地,使用 "最終確定 "在使用python模塊后釋放它。
PyImport_ImportModule()
用于加載python模塊,這是一個(gè)通用的python文件。這里需要注意的是,當(dāng)模塊被加載時(shí),模塊中所有的可執(zhí)行語(yǔ)句都會(huì)被執(zhí)行。包括import語(yǔ)句和函數(shù)體外部的所有語(yǔ)句。
PyObject_GetAttrString()
返回模塊中的函數(shù)。
Py_BuildValue()
創(chuàng)建參數(shù)元組,通常用這個(gè)函數(shù)創(chuàng)建一個(gè)元組,然后這個(gè)元組作為參數(shù)傳遞給python中的函數(shù)。
PyEval_CallObject()
調(diào)用函數(shù)并傳遞由 "Py_BuildValue"作為被調(diào)用函數(shù)的參數(shù)。
源代碼示例
下面的例子是調(diào)用Python C代碼中的s函數(shù),傳遞參數(shù)并獲取返回值。
Test.cpp代碼
#包含ltiostreamgt
#包含ltPython.hgt
使用命名空間標(biāo)準(zhǔn)
int main(int argc,char* argv[])
{
Py_Initialize() //初始化
PyObject * pModule為空
PyObject* pFunc NULL
PyObject * pParam空
PyObject*預(yù)設(shè)為空
const char* pBuffer NULL
int iBufferSize 0
p模塊PyImport_ImportModule(";test_python ";)
如果(!p模塊)
{
cout ltlt獲取模塊失敗!ltlt endl
退出(0)
}
p func py object _ GetAttrString(p module,main)
如果(!pFunc)
{
cout ltlt get func失?。tlt endl
cout ltlt int(pFunc) ltlt
python如何打包成exe文件?
在之前的文章《《讓你的代碼更好的交付,使用Python實(shí)現(xiàn)模塊打包發(fā)布》》中,分享了測(cè)試開(kāi)發(fā)工程師在交付時(shí),使用車輪庫(kù)將交付模塊封裝成. whl文件,達(dá)到了提高交付部署效率的目的。同時(shí),采用統(tǒng)一的發(fā)布,也有助于提高測(cè)試開(kāi)發(fā)的標(biāo)準(zhǔn)化程度。
除了發(fā)布模塊可以打包成。whl。
格式化文件,對(duì)于一些小型的測(cè)試工具發(fā)布場(chǎng)景,分享一種更適合的發(fā)布——打包成可執(zhí)行文件。exe程序,讓用戶即使在沒(méi)有Python的環(huán)境下也依然可以直接運(yùn)行,進(jìn)一步降低使用成本,提高使用效率。
接下來(lái),讓我們 分享如何使用PyInstaller庫(kù)將發(fā)布模塊打包成一個(gè)。exe格式文件。
建議通過(guò)pip安裝PyInstaller,否則可能會(huì)報(bào)錯(cuò)其他依賴庫(kù)缺失,需要手動(dòng)逐個(gè)安裝。
Pip安裝PyInstaller PyInstaller使用下面這個(gè)簡(jiǎn)單的代碼示例,其中導(dǎo)入了Python內(nèi)置的library-Time模塊和第三方library-csv模塊,這樣每次運(yùn)行時(shí)都可以將固定數(shù)據(jù)寫入新生成的csv文件中。
在模塊目錄下執(zhí)行以下命令,執(zhí)行日志如下:
您可以在其中看到。uildwritefiles.exe文件已經(jīng)在當(dāng)前目錄下生成。
當(dāng)我們執(zhí)行WriteFiles.exe時(shí),我們可以發(fā)現(xiàn)WriteFile_1550935956.csv文件已經(jīng)被添加到當(dāng)前目錄中。
PyInstaller -F常用參數(shù)說(shuō)明:打包單個(gè)文件,生成的結(jié)果是一個(gè)。exe格式文件。-D:打包多個(gè)文件,生成的結(jié)果是一個(gè)目錄,包括第三方依賴,資源,。exe文件等。適合用框架的形式寫工具模塊,帶默認(rèn)參數(shù)。-c:使用Windows控制臺(tái)子系統(tǒng)來(lái)執(zhí)行、顯示命令行窗口和默認(rèn)參數(shù)。-w:由Windows子系統(tǒng)執(zhí)行,程序啟動(dòng)時(shí)不會(huì)打開(kāi)命令行。這個(gè)參數(shù)在編寫GUI程序時(shí)很有用。-p:指定一個(gè)額外的導(dǎo)入路徑,類似于PYTHONPATH,多個(gè)目錄可以使用路徑分隔符(Windows用分號(hào),Linux用冒號(hào))。–-add-data:打包附加資源,多個(gè)資源可以使用路徑分隔符(Windows用分號(hào),Linux用冒號(hào))。––add-binary:打包多余的代碼,多個(gè)代碼可以使用路徑分隔符(Windows用分號(hào),Linux用冒號(hào))。同時(shí),將添加–- add-binary添加文件的引用文件。-i:添加圖標(biāo)的圖標(biāo)。exe文件。-n:編輯的文件名。exe和。規(guī)格。我們嘗試使用-F,-n參數(shù)只生成一個(gè)。exe文件,文件名為Toutiao。我們執(zhí)行以下命令并運(yùn)行日志,如下所示:
py installer-f-n Toutiao.exe其中distToutiao.exe文件生成在當(dāng)前目錄下,目錄結(jié)構(gòu)如下。
除了PyInstaller模塊,還可以將模塊打包成。exe格式,還可以了解pyexe模塊,也可以達(dá)到同樣的打包效果,所以我贏了 這里不單獨(dú)介紹了。
如果對(duì)你有幫助,歡迎評(píng)論留言。