1.Python脚本,名称为py_add.py

def add(a=,b=):

print('Function of python called!')

print('a = ',a)

print('b = ',b)

print('a + b = ',a+b)

2.C代码

#include

#include

#include

int main(int argc,char **argv){

//初始化,载入python的扩展模块

Py_Initialize();

//判断初始化是否成功

if(!Py_IsInitialized()){

printf("Python init failed!\n");

return -;

}

//PyRun_SimpleString 为宏,执行一段python代码

//导入当前路径

PyRun_SimpleString("import sys");

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

PyObject *pName = NULL;

PyObject *pModule = NULL;

PyObject *pDict = NULL;

PyObject *pFunc = NULL;

PyObject *pArgs = NULL;

//加载名为py_add的python脚本

pName = PyString_FromString("py_add");

pModule = PyImport_Import(pName);

if(!pModule){

printf("Load py_add.py failed!\n");

getchar();

return -;

}

pDict = PyModule_GetDict(pModule);

if(!pDict){

printf("Can't find dict in py_add!\n");

return -;

}

pFunc = PyDict_GetItemString(pDict,"add");

if(!pFunc || !PyCallable_Check(pFunc)){

printf("Can't find function!\n");

getchar();

return -;

}

/*

向Python传参数是以元组(tuple)的方式传过去的,

因此我们实际上就是构造一个合适的Python元组就

可以了,要用到PyTuple_New,Py_BuildValue,PyTuple_SetItem等几个函数

*/

pArgs = PyTuple_New();

// PyObject* Py_BuildValue(char *format, ...)

// 把C++的变量转换成一个Python对象。当需要从

// C++传递变量到Python时,就会使用这个函数。此函数

// 有点类似C的printf,但格式不同。常用的格式有

// s 表示字符串,

// i 表示整型变量, 如Py_BuildValue("ii",123,456)

// f 表示浮点数,

// O 表示一个Python对象

PyTuple_SetItem(pArgs,,Py_BuildValue("i",));

PyTuple_SetItem(pArgs,,Py_BuildValue("i",));

//调用python的add函数

PyObject_CallObject(pFunc,pArgs);

//清理python对象

if(pName){

Py_DECREF(pName);

}

if(pArgs){

Py_DECREF(pArgs);

}

if(pModule){

Py_DECREF(pModule);

}

//关闭python调用

Py_Finalize();

return ;

}

3,编译

gcc -I/usr/include/python2./ mian.c -o main -L/usr/lib/ -lpython2.

备注:链接Python的库需在最后,否则可能会出现以下的错误提示:

undefined reference to 'Py_Initialize'

4,运行结果

linux c 调用 python

/* *gcc -o callpy callpy.cpp -I/usr/include/python3.5 -lpython3.5m */ #include #inc ...

Python 使用ctypes调用 C 函数

在python中通过ctypes可以直接调用c的函数,非常简单易用 下面就一步一步解释用法吧,以Linux为例讲解. 1, 首先确定你的python支持不支持ctypes python2.7以后cty ...

[Python]linux自己定义Python脚本命令

在window下写好的程序配置到Linux上,要实现随意文件夹下的命令调用. 因为初学Linux,这里从文件传输等最主要的方法入手,记录配置的过程中遇到的各种问题. 连接远端server 这里使用pu ...

python学习:调用其他函数

vim wc.py   #!/usr/bin/python   def wordCount(s):     chars = len(s)     words = len(s.split())     ...

python网络编程调用recv函数完整接收数据的三种方法

最近在使用python进行网络编程开发一个通用的tcpclient测试小工具.在使用socket进行网络编程中,如何判定对端发送一条报文是否接收完成,是进行socket网络开发必须要考虑的一个问题.这 ...

用Python在Linux下调用新中新DKQ-A16D读卡器,读二代证数据

1.背景 最近在研究二代证读卡器,手头上的设备是新中新DKQ-A16D,在官网(https://www.onecardok.com.cn/download)逛了一圈,发现Win下的示例,浏览器插件很多 ...

python调用C函数

python 与 c可以相互调用,在做后台服务时底层服务用C/C++编写,通过python调用C库可以极大的提高开发效率. 下面对几种调用方式举例说明 1 python通过指针传递浮点型数组给C函数 ...

R 调用 python

上一篇说了python使用 rpy2 调用 R,这里介绍R如何调用python.R的强项在于统计方面,尤其是专业的统计分析,统计检验以及作图功能十分强大,但是在通用性方面,就远不如Python了,比如 ...

通过Java调用Python脚本

在进行开发的过程中,偶尔会遇到需要使用Java调用Python脚本的时候,毕竟Python在诸如爬虫,以及科学计算等方面具有天然的优势.最近在工作中遇到需要在Java程序中调用已经写好的Python程 ...

随机推荐

查看nginx在安装时开启了哪些模块

[root@nginx07 conf]# ./../sbin/nginx -V Tengine version: Tengine/ (nginx/) built by gcc (Red Hat -) ...

oracle的高可用与负载均衡

浏览了一下Oracle官方的网页以及非官方的ppt,简单了解了一下Oracle提供的高可用方案.1. RACRAC,  Real Application Clusters多个Oracle服务器组成一个 ...

【C#学习笔记】smtp发邮件

using System; using System.Net; using System.Net.Mail; using System.Text; namespace ConsoleApplicati ...

IE兼容性问题解决方案2--css样式兼容标签

在页面中加入下面的标签:

(转载)更好的重启nginx 服务器

(转载)http://jar-c.blog.163.com/blog/static/1164012502010511128782/ 以前使用的重启命令 killall  -HUP nginx 停止ki ...

RecyclerView实例-实现可下拉刷新上拉加载更多并可切换线性流和瀑布流模式(1)

摘要 最近项目有个列表页需要实现线性列表和瀑布流展示的切换,首先我想到的就是上 [RecyclerView],他本身已经很好的提供了三种布局方式,只是简单做个切换应该是很简单的事情,如果要用Recyc ...

getBoundingClientRect的用法

getBoundingClientRect用于获取某个元素相对于视窗的位置集合.集合中有top, right, bottom, left等属性. 1.语法:这个方法没有参数. rectObject = ...

MapReduce的InputFormat学习过程

昨天,经过几个小时的学习.该MapReduce学习的某一位的方法的第一阶段.即当大多数文件的开头的Data至key-value制图.那是,InputFormat的过程.虽说过程不是非常难,可是也存在非 ...

Java中常见的5种WEB服务器介绍

这篇文章主要介绍了Java中常见的5种WEB服务器介绍,它们分别是Tomcat.Resin.JBoss.WebSphere.WebLogic,需要的朋友可以参考下 Web服务器是运行及发布Web应用的 ...

java语言在某个数组中查找某个字符出现的次数

package com.llh.demo; import java.util.Scanner; /** * * @author llh * */ public class Test { /* * 在某 ...

c调用python函数_python - Linux C调用Python 函数相关推荐

  1. python怎么创建函数_Python创建与调用函数

    今天我们来讲Python里的创建与调用函数. 先讲创建函数,创建函数使用def关键字,就是define的缩写. 上代码看看吧: def say(info): print(info) 这就是一个名叫sa ...

  2. python子类如何调用父类方法_python中子类调用父类函数的方法示例

    前言 本文主要给大家介绍了关于python子类调用父类函数的相关内容,Python中子类中的__init__()函数会覆盖父类的函数,一些情况往往需要在子类里调用父类函数.下面话不多说了,来一起看看详 ...

  3. python 类函数调用外部函数_python类中调用外部函数,python 函数中 定义类

    Q1:python函数里的数组如何在函数外调用出来 使用返回值的方法有两种: 可以直接把调用的函数作为变量使用 可以用调用函数给一个变量赋值 第一种情况见如下例子: l = [1,2,3,4,5] d ...

  4. python中执行linux命令(调用linux命令)_Python调用Linux bash命令

    import subprocess as sup  # 以下注释很多(为了自己以后不忘), 如果只是想在python中执行Linux命令, 看前5行就够了 # 3.5版本之后官方推荐使用sup.run ...

  5. python中执行linux命令(调用linux命令)_常见Python中调用Linux命令

    有时候我们需要从Python中执行Linux命令,下面就介绍几种方法? 1. os 模块: 1.1 os.system 函数: system方法会创建子进程运行外部程序,方法只返回外部程序的运行结果. ...

  6. python函数装饰函数_Python精进-装饰器与函数对象

    本文为<爬着学Python>系列第四篇文章. 从本篇开始,本专栏在顺序更新的基础上,会有不规则的更新. 在Python的学习与运用中,我们迟早会遇到装饰器,这个概念对于初识装饰器的新手来说 ...

  7. python中locals函数_Python神奇的内置函数locals的实例讲解

    摘要 本文我们介绍神奇的locals函数,包括动态创建变量和动态访问变量,以及一个应用场景. 相同属性不相邻问题 需求:有两个list,分别为list1和list2.list1中有n个对象,每个对象有 ...

  8. python nums函数_Python中的内置函数

    Python中有很多内置函数,不需要我们调用模块可以直接使用,而且都是常用函数的封装,下面我们来看看Python中的内置函数都有那些. 1.abs() abs()是绝对值函数,把一个负数转化为正数,数 ...

  9. python四大高阶函数_Python里的高阶函数

    1.map() 是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回. def f(x): re ...

最新文章

  1. 跟踪自主车辆软件平台
  2. 这个CV数据集生成器火了,支持13类复杂CV任务,DeepMind谷歌MIT等打造丨开源
  3. [转]马云在《赢在中国》对创业者的经典点评
  4. 关于python中程序流程结构-Python程序结构
  5. 因为这两天比较忙,所以没有及时把要发表的东西写来.废话少说:我前面把两个简单的滚动说了下.接下来介绍第三种集合循环滚动....
  6. 推荐系统中的召回算法--协同过滤
  7. 【Python】35个经典案例:吃透Python中的if条件语句~
  8. java实现可有括号的android计算器
  9. 求出1到某个数的所有素数
  10. 【bzoj1532】[POI2005]Kos-Dicing 二分+网络流最大流
  11. cx是什么简称_80年的5角,在纸币收藏界简称为8005
  12. java在线聊天项目1.0版 异常处理——开启多个客户端,关闭一个客户端后,在其他客户端中再发出信息会出现异常的处理...
  13. SmmsForTypecho sm.ms 图床的typecho 插件 ,欢迎 star,pr
  14. 笔记本装那一版本Linux好,在我的新笔记本电脑上安装五种Linux版本
  15. 谷歌浏览器如何自动运行flash
  16. 创建与维护MySQL数据库
  17. 数据分析的N种特征方法实例
  18. 目标检测之FCOS算法分析
  19. ElementUI全局配置message的弹窗时间
  20. Leetcode1367.二叉树中的列表

热门文章

  1. 提升网页加载速度—预加载VS预读取
  2. Quill – 可以灵活自定义的开源的富文本编辑器
  3. vmware + ubuntu + docker+ tensorflow
  4. SSM-jsp页面放在web-INF下受保护,读取出现404页面tomcat获取不到资源-问题解决配置docBase
  5. c++ 清除list占用的内存_pytorch内存泄露-dataloader
  6. Linux下汇编语言学习笔记51 ---
  7. ArcGIS 10.2安装之 ArcSDE的使用
  8. ubuntu 16.04 修改光标/鼠标大小
  9. 接种新冠疫苗到实现完全免疫最快需要35天
  10. Ubuntu18.04忘记密码解决