10.3. stat —解释 stat()结果

源代码: Lib/stat.py


stat模块定义用于解释os.stat()os.fstat()os.lstat()(如果存在)的结果的常量和函数。有关stat()fstat()lstat()调用的完整详细信息,请查阅系统的文档。

stat模块定义了以下Function来测试特定的文件类型:

定义了两个附加Function,用于对文件模式进行更常规的操作:

通常,您可以使用os.path.is*()函数来测试文件的类型。当您对同一个文件进行多次测试并希望避免每个测试stat()系统调用的开销时,此处的Function很有用。当检查有关os.path未处理的文件的信息(例如对块和字符设备的测试)时,这些Function也很有用。

Example:

import os, sys
from stat import *

def walktree(top, callback):
    '''recursively descend the directory tree rooted at top,
       calling the callback function for each regular file'''

    for f in os.listdir(top):
        pathname = os.path.join(top, f)
        mode = os.stat(pathname).st_mode
        if S_ISDIR(mode):
            # It's a directory, recurse into it
            walktree(pathname, callback)
        elif S_ISREG(mode):
            # It's a file, call the callback function
            callback(pathname)
        else:
            # Unknown file type, print a message
            print 'Skipping %s' % pathname

def visitfile(file):
    print 'visiting', file

if __name__ == '__main__':
    walktree(sys.argv[1], visitfile)

以下所有变量都是os.stat()os.fstat()os.lstat()返回的 10Tuples 的简单符号索引。

“文件大小”的解释根据文件类型而变化。对于纯文件,这是文件大小,以字节为单位。对于大多数 Unix 系统(尤其是 Linux)下的 FIFO 和套接字,“大小”是在调用os.stat()os.fstat()os.lstat()时 await 读取的字节数;有时这很有用,特别是在非阻塞打开后轮询这些特殊文件之一时。其他字符和块设备的 size 字段的含义变化更多,具体取决于基础系统调用的实现。

以下变量定义了ST_MODE字段中使用的标志。

与使用第一组标志相比,使用上述Function更方便:

以下标志也可以在os.chmod()的* mode *参数中使用:

可以在os.chflags()的* flags 参数中使用以下标志:

有关更多信息,请参见* BSD 或 Mac OS 系统手册页* chflags(2)*。

首页