2016 - 2024

感恩一路有你

python怎么在文件中添加内容 怎样在python程序中嵌入C程序片段?

浏览量:4249 时间:2023-04-06 18:56:56 作者:采采

怎样在python程序中嵌入C程序片段?

在c中嵌入python有一些步骤。

安装python程序,以便可以使用python头文件和库。

添加 "Python.h "头文件链接到我们编写的源文件,并将其链接到 "python**。lib "库(需要明确这个库是静态库还是导出库)。

掌握并理解一些python C语言API,用于我们的C程序。

一些常用的C API函数

在理解以下函数之前,有必要知道**PyObject***指针。python中几乎所有的对象都由这个指针指示。

py _ Initialize()ampampPy _ Finalize()

在调用任何python c函数之前需要调用的函数初始化 "用于初始化python模块,大概是加载初始化加载dll。相应地,使用 "最终确定 "在使用python模块后释放它。

PyImport_ImportModule()

用于加载python模块,这是一个通用的python文件。这里需要注意的是,当模块被加载时,模块中所有的可执行语句都会被执行。包括import语句和函数体外部的所有语句。

PyObject_GetAttrString()

返回模块中的函数。

Py_BuildValue()

创建参数元组,通常用这个函数创建一个元组,然后这个元组作为参数传递给python中的函数。

PyEval_CallObject()

调用函数并传递由 "Py_BuildValue"作为被调用函数的参数。

源代码示例

下面的例子是调用Python C代码中的s函数,传递参数并获取返回值。

Test.cpp代码

#包含ltiostreamgt

#包含ltPython.hgt

使用命名空间标准

int main(int argc,char* argv[])

{

Py_Initialize() //初始化

PyObject * pModule为空

PyObject* pFunc NULL

PyObject * pParam空

PyObject*预设为空

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实现模块打包发布》》中,分享了测试开发工程师在交付时,使用车轮库将交付模块封装成. whl文件,达到了提高交付部署效率的目的。同时,采用统一的发布,也有助于提高测试开发的标准化程度。

除了发布模块可以打包成。whl。

格式化文件,对于一些小型的测试工具发布场景,分享一种更适合的发布——打包成可执行文件。exe程序,让用户即使在没有Python的环境下也依然可以直接运行,进一步降低使用成本,提高使用效率。

接下来,让我们 分享如何使用PyInstaller库将发布模块打包成一个。exe格式文件。

建议通过pip安装PyInstaller,否则可能会报错其他依赖库缺失,需要手动逐个安装。

Pip安装PyInstaller PyInstaller使用下面这个简单的代码示例,其中导入了Python内置的library-Time模块和第三方library-csv模块,这样每次运行时都可以将固定数据写入新生成的csv文件中。

在模块目录下执行以下命令,执行日志如下:

您可以在其中看到。uildwritefiles.exe文件已经在当前目录下生成。

当我们执行WriteFiles.exe时,我们可以发现WriteFile_1550935956.csv文件已经被添加到当前目录中。

PyInstaller -F常用参数说明:打包单个文件,生成的结果是一个。exe格式文件。-D:打包多个文件,生成的结果是一个目录,包括第三方依赖,资源,。exe文件等。适合用框架的形式写工具模块,带默认参数。-c:使用Windows控制台子系统来执行、显示命令行窗口和默认参数。-w:由Windows子系统执行,程序启动时不会打开命令行。这个参数在编写GUI程序时很有用。-p:指定一个额外的导入路径,类似于PYTHONPATH,多个目录可以使用路径分隔符(Windows用分号,Linux用冒号)。–-add-data:打包附加资源,多个资源可以使用路径分隔符(Windows用分号,Linux用冒号)。––add-binary:打包多余的代码,多个代码可以使用路径分隔符(Windows用分号,Linux用冒号)。同时,将添加–- add-binary添加文件的引用文件。-i:添加图标的图标。exe文件。-n:编辑的文件名。exe和。规格。我们尝试使用-F,-n参数只生成一个。exe文件,文件名为Toutiao。我们执行以下命令并运行日志,如下所示:

py installer-f-n Toutiao.exe其中distToutiao.exe文件生成在当前目录下,目录结构如下。

除了PyInstaller模块,还可以将模块打包成。exe格式,还可以了解pyexe模块,也可以达到同样的打包效果,所以我赢了 这里不单独介绍了。

如果对你有帮助,欢迎评论留言。

模块 文件 exe 参数 程序

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。