python的stat模块如何工作?

时间:2019-05-12 10:48:26

标签: python python-3.x stat

我知道这有点好奇。因为我相信如果我深入,我可以更快地获得它,并且在很短的时间内我可以成为专家。.今天有些事情在python 3.7的“ stat”模块中引起了我的注意

有时我们需要文件或目录的状态。这样我们就可以看到它。

>>>import pathlib as ph
>>>x=ph.Path('D://Music')
WindowsPath('D:/Music')
x.is_dir()
True

没问题。然后我进入pathlib以了解初始状态。我知道我会在其中遇到stat模块。

如果我们这样做:

x.stat()
#Then we will get a tuple like this
os.stat_result(st_mode=16749, st_ino=28147497........

因此stat模块要找出给定的地址是目录还是文件采用“ st_mode”,在这种情况下,这个数字为16749,魔术从这里开始。

以下代码来自stat模块内部。

我们的电话号码(16749)首先从S_IFMT穿过,因此将与值相加。

def S_IMODE(mode):
    """Return the portion of the file's mode that can be set by
    os.chmod().
    """
    return mode & 0o7777

def S_IFMT(mode):
    """Return the portion of the file's mode that describes the
    file type.
    """
    return mode & 0o170000

# Constants used as S_IFMT() for various file types
# (not all are implemented on all systems)

S_IFDIR  = 0o040000  # directory

如果我们手动进行操作:

>>> 16749&0o170000
16384
>>> oct(16384)
'0o40000'     #really is that   S_IFDIR  = 0o040000  # directory

看起来这个值来自内置的os级别,因为x文件的stat元组返回了它(st_mode)。所以问题是这样的。

1。这些值从何而来?像S_IFDIR一样,有一些变量使该“八进制”值保持为0o040000。

2。为什么使用此八进制数字ed,为什么不输入x呢?

预先感谢您的帮助。

0 个答案:

没有答案