linux c 调用python_C程序调用Python脚本

一般调用步骤

Py_Initialize(); //初始化Python环境

PyImport_ImportModule("test"); // 载入python模块

PyObject_GetAttrString(g_pModule,"test1"); //获得相应Python函数的PyObject

PyObject_CallFunction(test1,"i,s",2,e); //调用Python相应的函数

Py_Finalize(); //结束

C语言的示例代码

#include

int main(){

PyObject * g_pModule = NULL;

Py_Initialize(); //使用python之前,要调用Py_Initialize();这个函数进行初始化

if (!Py_IsInitialized())

{

printf("init error\n");

return -1;

}

PyRun_SimpleString("import sys");

PyRun_SimpleString("sys.path.append('./')");

g_pModule =PyImport_ImportModule("mytest");//这里是要调用的文件名,我们这里是当前目录下test.py

if (!g_pModule) {

printf("Cant open python file!\n");

return -2;

}

PyObject * test1 = PyObject_GetAttrString(g_pModule,"test1");//这里是要调用的函数名

PyObject *objResult = PyObject_CallFunction(test1,"i,s",2,e);//调用函数

if (!objResult){

printf("invoke function fail\n");

}

PyObject * test2= PyObject_GetAttrString(g_pModule,"test2");//这里是要调用的函数名

objResult = PyObject_CallFunction(test2,"i",2);//调用函数

char * x = PyString_AsString(objResult);

printf("%s\n",x);

Py_Finalize();//调用Py_Finalize,这个跟Py_Initialize相对应的。

}

Python程序mytest.py

def test1(s,str):

print s+str

return 0

def test2(s):

return s

C程序的编译方法

#假设我们的python编译的时候安装在/opt/python里,那么我们可以用这样的命令来编译程序

$gcc -I/opt/python/include -L/opt/python/lib/ -lpython2.7 test.c

注意: 这里要求python编译的时候,需要有动态链接库即加上--enable-shared

./configure --prefix=/opt/python --enable-shared

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/443268.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

命令测试post_【第2088期】前端中台化,把格局做大——NodeJS 和测试服务探索

前言今日早读文章由《React状态管理与同构实战》作者LucasHC投稿分享。正文从这开始~~近些年,「NodeJS 应该如何在公司业务中真实落地 」这类问题屡见不鲜。自从 2009 年 NodeJS 诞生之后,抢尽风头,圈粉无数。但一定有工程师不禁要质疑「Node…

Go类型转换

由于Go语言不存在隐式类型转换,因此所有的类型转换都必须显式的声明。 string、int、float类型相互转换 string转其他 string转成int: int, err : strconv.Atoi(string) string转成int64: // 参数1:带转换字符串,/…

linux tee 重定向_快乐的linux命令行-重定向

整理自《快乐的linux命令行一书》。linux系统版本: Ubuntu 17.04本章,我们将介绍命令行最酷的特性,叫做I/O重定向,通过这个工具,可以重定向命令的输入输出,命令的输入来自文件,而输出也存到文。…

Java 诊断工具 Arthas 常见命令

基本概念 云原生这么多微服务,当然需要一个诊断利器来排查问题。 Arthas 是阿里开源的 Java 诊断工具,深受开发者喜爱。在线排查问题,无需重启;动态跟踪 Java 代码;实时监控 JVM 状态。Arthas 支持 JDK 6&#xff0c…

28和lba48命令格式区别_编译Sass(命令行)

本文作者:开课吧无忧图文编辑:开三金sass编译有很多种方式,如命令行编译模式、编辑器自动编译、编译软件koala、sass-loader等。今天我们就先来看第一种:命令行编译刚才我在test文件夹里面已经建立了一个style.scss文件&#xff0…

JAVA基础编程代码50个

【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? 程序分析: 兔子…

爬虫软件python功能_Python 网络爬虫程序详解

#!/usr/bin/python #调用pythonfrom sys import argv #导入sys是导入python解释器和他环境相关的参数from os import makedirs,unlink,sep  #os主要提供对系统路径,文件重命名和删除文件所需的函数#makedirs是创建递归文件夹的函数。#比如说我们要创建一个新的目录…

价钱转换python_如何在python中转换货币?

我正在做一个虚拟助手项目。我想让它告诉我其他货币的美元汇率。我用beauthoulsoup编写了以下代码,它从给定的网站获取数据,对其进行解析并在命令行中打印结果供我阅读。但这只是美元对巴基斯坦卢比。如何修改程序,使其接受任何货币并告诉我该…

char qt 转unicode_Qt QString 中文 char* UTF-8 QByteArray QTextCodec unicode gb2312 GBK 乱码与转码问题...

2012-03-22 14:00175人阅读评论(0)代码如下:如果不不设全局的字符集是utf-8,那么网上一般的方法是可以转的。如下程序中 #define DD 1的情况下;但是如果设置了全局的utf-8,再用以前的方法:QByteArraybaaaa.toLatin1();…

计算机图形学考试题及答案_计算机图形学考试题及答案

3、在图形文件中,常用来描述图形元素(点,线,圆,弧等);而在光栅扫描图形显示器中,采用显示所有图形。4、当三维物体用透视变换方程投影到观察平面上,物体中不与观察平面平行任一簇平行线投影成收…

子窗体中组合框联动_一张表实现组合框联动

嗨,大家中午好!最近,有网友给我私信,想要一个联动的示例,一个有关于部门联动的操作。其实关于联动的操作有很多,可以是组合框的联动,列表框联动,组合框与列表框也可以联动&#xff0…

中如何实现文字转语音_录音转文字、文字转语音,学会这一招就够了!手把手教你如何操作...

阅读文章时候想着有人可以把文章读给我听就好了,写作时想着语音直接可以转换成文字就好了,大家是不是有时会突然冒出这样的想法?七十这些看似天真的想法,还真的有办法解决,这里就手把手教你如何操作才能将的文字转换成…

图像 理想低通滤波_图像处理之滤波(下)

[toc]目录一、常规滤波低通高通带通带阻二、非局部均值滤波三、维纳滤波四、卡尔曼滤波前言所谓滤波,其实就是从混合在一起的诸多信号中提取出所需要的信号。信号的分类:确定型信号,可以表示为确定的时间函数,可确定其在任何时刻的…

泰山行宫碧霞元君祠_临清市泰山行宫碧霞元君祠5月4号(农历三月三十日)举行大型泰山奶奶接驾法会...

临清是泰山奶奶的娘家,每年的四月泰山奶奶要回临清省亲临清市道教协会定于2019年农历三月三十(5月4号星期六)于临清桑树园泰山行宫碧霞元君祠举行大型泰山奶奶迎鸾接驾庙会。届时,将有架鼓会、云龙会、狮胞会、钢叉会、高跷会、天音会、彩船会、秧歌会等…

充分条件反过来是必要条件吗_“充分必要条件”引发的现实思考

昨天看了一篇文章是介绍“充分条件和必要条件”,大致就是A能直接推导出B,那A就是B的充分条件。A不一定能推导出B,但是没A一定推导不出B,那A就是B必要条件。举个简单的例子:对你好(A)与喜欢你&am…

手机游戏降低游戏延迟的软件_怎么降低手机网络延迟(减少网络延迟的5个小技巧)...

在过去的几十年里,用户或开发人员并不担心延迟。在上世纪90年代和本世纪初,个人互联网连接速度要慢得多,因此发送请求和接收响应之间的延迟要远远小于下载完成所需的时间。如今,更高的带宽连接使下载速度更快,因此延迟…

mysql常用的开发软件下载_强烈推荐!14款经典的MySQL客户端软件

【IT168 评论】不用我说,大家都知道MySQL是一个怎么样的数据库。虽然它的命运比较坎坷,但是丝毫没有影响到我们对MySQL的热情。不论是个人程序或者网站,还是企业数据库,MySQL的身影无处不在。无论做什么数据库的开发,一…

mysql最大值最小值_mysql最大值,最小值,总和查询与计数查询

1、最大值查询:mysql> select max(score) from 4a;------------| max(score) |------------| 93 |------------1 row in set (0.06 sec)2、最小值查询:mysql> select max(4a.score),min(4inall.score) from 4a,4inall;-------------------…

阿里云 centos mysql_在阿里云的CentOS环境中安装配置MySQL的教程

1 常规错误的yum安装方法:在前文中记述了CentOS 6.5系统中通过yum方式快速地搭建了LNMP环境,那么是否也能在CentOS 7或CentOS 7.1系统中依葫芦画瓢安装MySql5.6.24呢?答案是否定的。[roottypecodes ~]# yum -y install mysql mysql-server my…

mysql文件脱机_SQL数据库的脱机与联机操作

online : 可对数据库进行访问offline:数据库无法使用1、使用查询语句select state_desc from sysdatabases where name 数据库名 2、使用databasepropertyex( database,property)函数select databasepropertyex( 数据库 ,’ status )分离数据库:EXEC…