2012-07-13 75 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