2012-07-13 76 views
2

我查看了CPython的源代码(Hg online here),但我似乎无法找到os.stat()的定义。看起来statos模块(Lib/os.py,约在线139)中是神奇的全局。在CPython中定义os.stat()在哪里?

有人可以指向我的相应文件吗?

+0

看起来像Modules/posixmodule.c中的'posix_stat()':2302将'stat(2)'系统调用暴露给python,但它不能很好地解释它是如何到达'os'的。它被添加到10952行的'posix_modules',对应于“stat”。这些看起来是从11814行上的模块中导出的。 – 2012-07-13 17:45:33

回答

4

貌似线51(用于UNIX;也有类似的线其他平台):

from posix import * 

跟踪它的时候,我们发现我们通过线29的返回值达到这一点:

2301,其最终由 os称为:

static PyObject * posix_lstat(PyObject *self, PyObject *args, PyObject *kwargs) // ... 

posix_statModules/posixmodule.c定义

+1

啊,谢谢!我错过了。 – 2012-07-13 17:50:14

3

此功能取决于平台,并在posix,nt,os2ce模块之一中定义。作为一个例子,这里是implementation of os.stat() for POSIX operating systems

+0

我自己发现了这个功能。它如何在'os'中结束?谢谢。 – 2012-07-13 17:49:20

+1

@ConradMeyer:已导入。 'os.py'中有一大堆'from xxx import *'语句;正确的选择是基于平台的。 – 2012-07-13 17:50:50