我知道这有点好奇。因为我相信如果我深入,我可以更快地获得它,并且在很短的时间内我可以成为专家。.今天有些事情在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呢?
预先感谢您的帮助。