C语言中执行python代码或源程序文件(高级嵌入方式)

原创 2012年03月26日 11:20:47

环境:Fedora12 + Python2.6 + C

1. 建立python源代码文件(del.py):

#!/usr/bin/env python

def calculate(expression):
	try:
		result = eval(expression)
	except:
		print("Eval Error!")
		return None
	return result

if __name__ == "__main__":
	f = open("aa.log", "w")
	f.write("Hello world\n")
	f.close()
	print("what can I do for you")
	expression = "2^(4+2)"
	result = calculate(expression)
	print(result)

2. 建立C源程序(a.c):

/*
	功能:C程序中执行python代码或python源程序文件
*/
#include <Python.h>

int main()
{
	int n = 0;
	char fname[] = "del.py";
	FILE *fp = fopen(fname, "r");					// 打开python源码文件
	if(fp == NULL)
	{
		perror("fopen");
		return 1;
	}

	Py_Initialize();								// 初始化python解释器

	n = PyRun_SimpleString("print(eval('2*6'))");	// 执行python代码
	printf("1. n = %d\n\n", n);

	n = PyRun_SimpleFile(fp, fname);				// 执行python文件
	printf("2. n = %d\n\n", n);

	Py_Finalize();

	fclose(fp);

	return 0;
}

3. 编写makefile文件

CC=gcc
CFLAGS=-g
BIN=a

$(BIN): $(BIN).c
	$(CC) $(CFLAGS) -o $(BIN) $(BIN).c -I/usr/include/python2.6 -lpython2.6

clean:
	rm -f *.o $(BIN)

4. 编译运行

[zcm@t #87]$ls
a.c  del.py  makefile  socket
[zcm@t #88]$make
gcc -g -o a a.c -I/usr/include/python2.6 -lpython2.6
[zcm@t #89]$./a
12
1. n = 0

what can I do for you
4
2. n = 0

[zcm@t #90]$ls
a  aa.log  a.c  del.py  makefile  socket
[zcm@t #91]$cat aa.log
Hello world
[zcm@t #92]$

说明:这个代码演示的是python代码高级嵌入方式!


C语言中嵌入Python

1.为什么要嵌入python? 这个问题问的好,一般静态语言与脚本语言(不仅仅是python),相互搭配,有两种方式,一种是用c语言写好模块,然后用python去整合,也被称之为扩展python,这...

使用c语言调用python小结

最近在做一个漏洞展示平台,攻击实现部分使用python实现,c语言实现部分使用libcli库做一个类似telnet的东东,回调函数run的时候调用python模块。针对c调用python,做个了小de...

如何发布C和python混合编程的程序

例如这样一个程序:extern "C" {#include }int main(int argc,char *argv[]){Py_Initialize();if(!Py_IsInitialized(...

PyQt5初级教程--PyQt5中的事件和信号[6/13]

想用PyQt5写GUI,但是网上的PyQt5资源太少了,找到一个英文的,翻译一下,和学习PyQt5的同学共勉! (本系列中所有代码在windows7 64位[]/Python 3.4.3 32bit...

Qt学习——分割窗口QSplitter类

分割窗口在应用程序中经常用到,比如在类似资源管理器的窗口设计中: 下面用代码实现上面窗口的设计: 1.建立项目时基类选择QMainWindow,取消Gernerate form...

linux平台下C语言调用python代码示例

首先有三个部分, 1.python代码,名为pyadd.py,代码如下: def add(a=1,b=1): print "*************" print "...

源程序怎么变成可执行文件—学C语言难免碰到的困惑

电子计算机所使用的是由“0”和“1”组成的二进制数,二进制是计算机的语言的基础。计算机发明之初,人们只能降贵纡尊,用计算机的语言去命令计算机干这干那,一句话,就是写出一串串由“0”和“1”组成的指令序...

【转载】用cx_Freeze把Python代码打包成单个独立的exe可执行文件

链接:用cx_Freeze把Python代码打包成单个独立的exe可执行文件 【记录】用cx_Freeze把Python代码打包成单个独立的exe可执行文件 背景 之前已经折...

用PyInstaller把Python代码打包成单个独立的exe可执行文件

之前就想要把自己的BlogsToWordpress打开成exe了。一直没去弄。 又看到有人提到python打开成exe的问题。 所以打算现在就去试试。 注:此处之所有选用BlogsToWordp...

【转载】用PyInstaller把Python代码打包成单个独立的exe可执行文件

链接:用PyInstaller把Python代码打包成单个独立的exe可执行文件 【记录】用PyInstaller把Python代码打包成单个独立的exe可执行文件 之前就想要把自...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言中执行python代码或源程序文件(高级嵌入方式)
举报原因:
原因补充:

(最多只允许输入30个字)