c语言代码可以python运行吗_c语言如何运行python脚本

目前的C/C++与python的混合编程分为两大类:

1、使用python调用c/c++编写的扩展库,扩展python的功能,我们暂且称为python调用c/c++

2、使用c/c++程序调用执行python中定义的函数等,我们暂且称为c/c++调用python

本文只针对c/c++调用执行python作一方面的介绍,如有不正确的地方,还请诸位批评指正。

目前,主流的用法是把python作为一种文本形式的链接库,在c/c++程序中调用其中定义的函数,这方面的资料很多,本文就不在赘述了,本文重点介绍一种完整调用python脚本文件及参数的方法,闲话少说,上例子:

以下是测试用的python脚本文件,功能是输出命令行参数:sample.py# !/usr/bin/env python2.6

import sys

def test():

for arg in sys.argv:

print arg

if __name__=='__main__':

test()

以下是测试用的c++程序文件:test.c++#include "python2.6/Python.h"

int main()

{

//第一步:初始化Python

//在调用Python的提供的给C的API之前,通过执行初始化

//来添加Python的内建模块、__main__、sys等

Py_Initialize();

//检查初始化是否完成

if (!Py_IsInitialized())

{

return -1;

}

//第二步:导入sys模块

PyRun_SimpleString("import sys");

//第三步:导入执行脚本时的命令行参数,如:./sample.py arg1 arg2

PyRun_SimpleString("sys.argv['arg1','arg2']");

//第四步:执行调用脚本文件命令,注意文件的路径

if (PyRun_SimpleString("execfile('./sample.py')") == NULL)

{

return -1;

}

//第五步:关闭Python解释器

Py_Finalize();

return 0;

}

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

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

相关文章

十万个为什么 —— 为什么一个数的 0 次方只能是 1

1. 幂的排列 212,224,238 ⇒ 20?,2−112 2012. 指数乘法运算 对于所有的实数 x,y,ax⋅ayaxy 因此: 当 y0 时,ax⋅a0ax ⇒ a01当 y−x 时,ax⋅a−xa0 ⇒ a01转载于:https://www.cnblogs.com/mtcnn/p/9423448.html

Threejs性能监视和可视化控制

概述 性能监视是监视threejs运行中的刷新频率,要使用到threejs提供的stat.js,可视化控制是在窗口中显示一个可见的控制框,可以通过鼠标改变其中的值,达到改变threejs对象参数的目的,需要使用到dat.gui.js 性能监视 …

python autoit上传文件_结合python+selenium使用AutoIt V3实现文件、图片上传

1.下载、安装AutoIt V3下载官网:https://www.autoitscript.com/site/autoit/downloads/2.AutoIt V3组件介绍AutoIt Windows Info 或者Au3Info_x64.exe 用于帮助我们识别Windows控件信息。Compile Script to.exe 或者Aut2exe_x64.exe 用于将AutoIt生成 exe …

百度贴吧的数据抓取和分析(一):指定条目帖子信息抓取

这个教程使用BeautifulSoup库爬取指定贴吧的帖子信息。 本教程的代码托管于github: https://github.com/w392807287/spider_baidu_bar 数据分析部分请移步: python版本:3.5.2 使用BeautifulSoup库获取网页信息 引入相关库: from bs4 import …

在ES6类中绑定事件

概述 ES6提供了类,给模块化带来了很大的帮助。在类里面绑定事件,一来是为了使得代码结构清晰,二来是为了可以使用类的变量和方法。但是,由于事件的回调函数并不是由类的实例对象触发,所以,事件回调函数里面…

DevExpress.Utils.ToolTipLocation

private void textBox1_TextChanged(object sender, EventArgs e){if ((sender as TextBox).Text.Length 0){DevExpress.Utils.ToolTipLocation tipLocation new DevExpress.Utils.ToolTipLocation();toolTipController1.ShowHint("不能为空", textBox1, ToolTipLo…

github基本使用教程

2017-10-22 更新 目前已经有一个很好的Github教程—— Git it,可以花半个小时比较全面的了解github的使用,直接在relaese里下载一个最新版,双击运行就可以看到教程了。下面的教程也还可使用。 如果不熟悉 git命令,可以使用 learngitbranchi…

python while九九乘法表儿歌_python使用while循环实现九九乘法表

protocol http not supported or disabled in libcurl apt-getubuntu 14.04 碰到了这个莫名其妙的问题.谷歌了一把,解决方案如下:http://askubuntu.com/questions/683857/curl-1-protocol-https-n ...linux基础-基本命令的讲解(1-7单元)基本命令的讲解 主要内容介绍 1…

EF+postgresql中的一些问题

需要基于MVC的WebAPI搭建一个服务接口,数据存储在postgresql数据库,在使用的过程中遇到了很多问题。做一下记录: (1) System.IO.FileLoadException: 未能加载文件或程序集“Npgsql, Version3.1.2.0, Cultureneutral, P…

Navicat Error 2003 - can't connect to mysql server 'localhost' (10061)

项详细出错对象:Navicat for mysql出错信息:2003 - can’t connect to mysql server ‘localhost’ (10061)出错原因:mysql 服务器没有启动解决办法:去mysql的安装目录下找到“\bin\mysqld.exe”,双击运行!…

▲数据结构 笛卡尔树【2011】五2 C++版

转载于:https://www.cnblogs.com/qilinart/articles/5940726.html

运行时异常与一般异常有何异同_Java修行第015天,异常机制和常用类

1. 异常概念_分类1) 什么叫异常?答:异常(Expection)就是在程序运行过程中所发生的不正常的事件,它会中断正在运行的程序2) 请简述异常的分类?答:异常分为Error(仅靠程序本身无法恢复的严重错误)和由Java应用程序 抛出和处理的非严重错误.非严重错误又分为…

js 自定义事件

自定义事件很难派上用场? 为什么自定义事件很难派上用场,因为以前js不是模块化开发,也很少协作。因为事件本质是一种通信方式,是一种消息,只有存在多个对象,多个模块的情况下,才有可能需要用到…

uWSGI安装配置

uWSGI安装配置官方网站:http://uwsgi-docs.readthedocs.io环境:CentOS 7.2python-2.7.5一.安装yum -y install gcc gcc-c python-develcurl -sSL https://projects.unbit.it/downloads/uwsgi-2.0.14.tar.gz |tar -xvf - --gzipcd uwsgi-2.0.14make -j4################# uWSGI …

python日志输出 超量 停止_linux 内存分配参数导致的 buffer_pool 分配不出来的问题排查...

linux 内存分配参数导致的 buffer_pool 分配不出来的问题排查:参考:http://blog.csdn.net/jollyjumper/article/details/24127009原文:http://www.cnblogs.com/gomysql/p/6130405.htmlvm.overcommit_memory默认值为:0从内核文档里…

javascript自定义事件应用实例

可以先看例子 从 js 自定义事件 里知道:元素A通过dispatchEvent方法触发的事件,只有A上注册的监听器才能监听得到。 我们想要的效果是,别的对象干了某件事之后, 发个消息给我们,好让我们能做相应的改变。要做到这样…

啥是ETL、ELT

ETL就是Extract、Transfrom、Load即抽取、转换、加载三个英文单词首字母的集合。抽取:就是从源系统抽取需要的数据,这些源系统可以是同构也可以是异构的:比如源系统可能是Excel电子表格、XML文件、关系型数据库,而目标系统通常都是…

python无法导入numpy_python – Pycharm无法导入numpy

我的系统是Mac OS X.我首先通过macport安装numpy然后下载Pycharm并发现无论我选择哪种解释器我都无法导入numpy.结果如下:/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 "/Users/erleye/Documents/Python/Pycharm Projects/test.py"T…

DOM Element对象的offsetXXX方法

原生js的offset***方法 c.offsetLeft 和 c.offsetTop 一般指当前元素的CSS边框相对于其offsetParent的X和Y坐标c.offsetHeight 和 c.offsetWidth 当前元素及其所有内容的高度&#xff0c;宽度。c.offsetParent 大多数元素都的都是指<body> 参考《javascript权威指南 第六…

weblogic10异常:org.hibernate.hql.ast.HqlToken

转自&#xff1a;http://www.programgo.com/article/68682994452/ 在做查询的时候&#xff0c;报出 org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken这 个错误&#xff08;是通过数据源连接的&#xff09; 解决方法如下&#xff1a;…