由于Python功能强大并且各种应用程序库十分丰富,它常常可以以一种简单的方式来完成C/C++比较难实现的功能。Python/C API可以使得C/C++程序员在他们的程序中嵌入Python程序,使得开发的灵活性和简易性大大提高。在这里我以python 2.5版本举一个小例子来简单讲述一下Python/C API的用法,如果大家有兴趣可以参见官方文档来深入学习:
在code之前需要先做一些准备:
1. 把python的include和libs目录分别加到vc的include和lib directories中去。
2. 另外,由于python没有提供debug lib,具体地说,就是没有提供python25_d.lib了,所以默认只能在Release下运行。
3. 可以自己编译python的源代码来得到python25_d.lib。
4. 或者,想要在debug下运行程序的话,你要把pyconfig.h(在python25/include/目录下)的大概是在283行,
5. 把pragma comment(lib,"python25_d.lib")改成pragma comment(lib,"python25.lib"),让python都使用非debug lib.
我们需要嵌套的这段Python代码用于遍历目录得到其下的所有文件。将这个.py文件copy到工程目录中。
#-*- coding:gbk -*-
2:
3: import os,sys
4:
5: def walk_dir(dirpath,dirfile):
if not os.path.exists(dirpath) :
'%s does not exits, please try again !' %dirpath
return -1
9:
in os.walk(dirpath)][0]
#print 'dirtuple is',dirtuple
12: root=dirtuple[0]
#print 'root is',root
if root[len(root)-1] != os.sep :
15: root+=os.sep
16:
'a')
in dirtuple[2]:
'%s\n' % (root+files))
#avoid buffer overflow
21: f.close()
22:
in dirtuple[1]:
24: walk_dir(root+dirs,dirfile)
25:
return 1
27: