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