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

标签 python python-2.7 cpython

我一直在查看 os 模块的代码(为了清楚起见,我正在查看文件/usr/lib/python2.7/os.py),并且我一直在努力寻找mkdir 函数的代码。据我所知,它来自“posix”模块,它是一个内置函数,与 range 或 max 相同:

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

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

谢谢!

最佳答案

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

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

模块在模块 PyMethodDef posix_methods structure 中注册此函数以及其他函数。 .导入模块时,Python 调用 PyMODINIT_FUNC() function ,它使用该结构创建具有 posix_methods 结构的适当模块对象,并向模块添加一系列常量(例如 open() flag constants)。

参见 Extending Python with C or C++ C 扩展如何工作的教程。

关于Python:os.mkdir 的代码在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16617809/

相关文章:

python - 如何将具有更多条目的 SQLite 数据库压缩为更小的文件大小?

python - 更新嵌套列表在 python 中花费的时间太长

python - python字典的奇怪行为

Python C-API : Populate a Py_buffer from a C function

python - pandas 按指定列获取平均值和模式组

python - 使用递归更新嵌套字典值

python - 将一个字符串分成一定长度的较小字符串列表

python - Py_None 的值

python - 如何合并行和添加列值?

python - 如何组织Python相关类