C语言中执行python代码或源程序文件(高级嵌入方式)
生活随笔
收集整理的這篇文章主要介紹了
C语言中执行python代码或源程序文件(高级嵌入方式)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
環(huán)境:Fedora12 + Python2.6 + C
1. 建立python源代碼文件(del.py):
#!/usr/bin/env pythondef calculate(expression):try:result = eval(expression)except:print("Eval Error!")return Nonereturn resultif __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程序中執(zhí)行python代碼或python源程序文件 */ #include <Python.h>int main() {int n = 0;char fname[] = "del.py";FILE *fp = fopen(fname, "r"); // 打開(kāi)python源碼文件if(fp == NULL){perror("fopen");return 1;}Py_Initialize(); // 初始化python解釋器n = PyRun_SimpleString("print(eval('2*6'))"); // 執(zhí)行python代碼printf("1. n = %d\n\n", n);n = PyRun_SimpleFile(fp, fname); // 執(zhí)行python文件printf("2. n = %d\n\n", n);Py_Finalize();fclose(fp);return 0; }
3. 編寫(xiě)makefile文件 CC=gcc CFLAGS=-g BIN=a$(BIN): $(BIN).c$(CC) $(CFLAGS) -o $(BIN) $(BIN).c -I/usr/include/python2.6 -lpython2.6clean:rm -f *.o $(BIN)
4. 編譯運(yùn)行 [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 = 0what 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]$
說(shuō)明:這個(gè)代碼演示的是python代碼高級(jí)嵌入方式!
總結(jié)
以上是生活随笔為你收集整理的C语言中执行python代码或源程序文件(高级嵌入方式)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C# JPG转PDF
- 下一篇: 判断一个Checkbox是否被选中