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

96 篇文章 1 订阅

环境: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代码高级嵌入方式!


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值