Python:os.mkdir的代码在哪里?

时间:2013-05-17 20:58:39

标签: python python-2.7 cpython

我一直在浏览os模块的代码(只是为了清楚,我正在查看文件/usr/lib/python2.7/os.py),我一直在努力寻找mkdir函数的代码。据我所知,它来自'posix'模块,它是一个内置函数,与范围或最大值相同:

>>> import posix
>>> posix.mkdir
<built-in function mkdir>
>>> max
<built-in function max>

我猜这些代码是用C语言编写的,python解释器知道在哪里找到它们。有人可以解释,或者指出一些资源,这些内置函数的编写方式和位置以及它们如何与解释器集成?

谢谢!

1 个答案:

答案 0 :(得分:6)

在POSIX平台(以及Windows和OS / 2)上,os模块从posixmodule.c中定义的C模块导入。

此模块定义了一个posix_mkdir() function,它将mkdir() C call包装在POSIX平台上,CreateDirectoryW在Windows上。

模块在模块PyMethodDef posix_methods structure中将此功能与其他功能一起注册。导入模块时,Python调用PyMODINIT_FUNC() function,它使用该结构创建具有posix_methods结构的approriate模块对象,并添加一系列常量(例如open() flag constants)到模块。

请参阅有关C扩展如何工作的Extending Python with C or C++教程。