Skip to main content

11.4. stat —解释 stat() 结果

源代码: Lib/stat.py


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

在 3.4 版更改: stat模块由C实现支持。

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

stat.S_ISDIR(mode)

如果模式来自目录,则返回非零。

stat.S_ISCHR(mode)

如果模式来自字符特殊设备文件,则返回非零。

stat.S_ISBLK(mode)

如果模式来自块特殊设备文件,则返回非零。

stat.S_ISREG(mode)

如果模式来自常规文件,则返回非零。

stat.S_ISFIFO(mode)

如果模式来自FIFO(命名管道),则返回非零。

stat.S_ISLNK(mode)

如果模式来自符号链接,则返回非零。

stat.S_ISSOCK(mode)

如果模式来自套接字,返回非零。

stat.S_ISDOOR(mode)

如果模式是从门返回非零。

3.4 新版功能.

stat.S_ISPORT(mode)

如果模式来自事件端口,则返回非零。

3.4 新版功能.

stat.S_ISWHT(mode)

如果模式来自白光,返回非零。

3.4 新版功能.

定义了两个附加函数用于更一般地处理文件模式:

stat.S_IMODE(mode)

返回文件模式的可以由 os.chmod() —设置的部分,即文件的权限位,以及sticky位,set-group-id和set-user-id位(在支持它们的系统上) 。

stat.S_IFMT(mode)

返回文件模式的描述文件类型的部分(由上面的 S_IS*() 函数使用)。

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

例:

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)

提供了一个附加的实用程序函数,用于以可读的字符串转换文件的模式:

stat.filemode(mode)

将文件的模式转换为格式为’-rwxrwxrwx’的字符串。

3.3 新版功能.

在 3.4 版更改: 该功能支持 S_IFDOORS_IFPORTS_IFWHT

下面的所有变量只是 os.stat()os.fstat()os.lstat() 返回的10元组中的符号索引。

stat.ST_MODE

inode保护模式。

stat.ST_INO

信息节点号。

stat.ST_DEV

设备节点驻留。

到inode的链接数。

stat.ST_UID

所有者的用户ID。

stat.ST_GID

所有者的组ID。

stat.ST_SIZE

平面文件的字节大小;等待某些特殊文件的数据量。

stat.ST_ATIME

最后访问的时间。

stat.ST_MTIME

上次修改时间。

stat.ST_CTIME

操作系统报告的“ctime”。在一些系统(如Unix)上是最后一个元数据更改的时间,在其他系统(如Windows)上是创建时间(有关详细信息,请参阅平台文档)。

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

下面的变量定义在 ST_MODE 字段中使用的标志。

使用上面的函数比使用第一组标志更便携:

stat.S_IFSOCK

插座。

stat.S_IFLNK

符号链接。

stat.S_IFREG

常规文件。

stat.S_IFBLK

块设备。

stat.S_IFDIR

目录。

stat.S_IFCHR

字符设备。

stat.S_IFIFO

FIFO。

stat.S_IFDOOR

门。

3.4 新版功能.

stat.S_IFPORT

事件端口。

3.4 新版功能.

stat.S_IFWHT

Whiteout。

3.4 新版功能.

注解

当平台不支持文件类型时,S_IFDOORS_IFPORTS_IFWHT 被定义为0。

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

stat.S_ISUID

设置UID位。

stat.S_ISGID

设置组ID位。这个位有几个特殊用途。对于目录,它指示BSD语义将用于该目录:在那里创建的文件从目录继承其组ID,而不是从创建进程的有效组ID,并且在那里创建的目录也将获得 S_ISGID 位集。对于没有设置组执行位(S_IXGRP)的文件,set-group-ID位指示强制文件/记录锁定(另请参见 S_ENFMT)。

stat.S_ISVTX

粘滞位。当在目录上设置此位时,表示该目录中的文件只能由文件所有者,目录所有者或特权进程重命名或删除。

stat.S_IRWXU

文件所有者权限的掩码。

stat.S_IRUSR

所有者具有读取权限。

stat.S_IWUSR

所有者有写权限。

stat.S_IXUSR

所有者具有执行权限。

stat.S_IRWXG

组权限的掩码。

stat.S_IRGRP

组具有读取权限。

stat.S_IWGRP

组具有写权限。

stat.S_IXGRP

组具有执行权限。

stat.S_IRWXO

其他人的权限掩码(不在组中)。

stat.S_IROTH

其他人有读权限。

stat.S_IWOTH

其他人有写权限。

stat.S_IXOTH

其他人有执行权限。

stat.S_ENFMT

系统V文件锁强制。此标志与 S_ISGID 共享:对没有设置组执行位(S_IXGRP)的文件执行文件/记录锁定。

stat.S_IREAD

Unix V7 S_IRUSR 的同义词。

stat.S_IWRITE

Unix V7 S_IWUSR 的同义词。

stat.S_IEXEC

Unix V7 S_IXUSR 的同义词。

以下标志可用于 os.chflags()flags 参数:

stat.UF_NODUMP

不转储文件。

stat.UF_IMMUTABLE

文件不能更改。

stat.UF_APPEND

该文件只能追加到。

stat.UF_OPAQUE

当通过联合堆栈查看时,该目录是不透明的。

该文件不能重命名或删除。

stat.UF_COMPRESSED

该文件存储压缩(Mac OS X 10.6+)。

stat.UF_HIDDEN

该文件不应显示在GUI(Mac OS X 10.5+)中。

stat.SF_ARCHIVED

该文件可能已归档。

stat.SF_IMMUTABLE

文件不能更改。

stat.SF_APPEND

该文件只能追加到。

该文件不能重命名或删除。

stat.SF_SNAPSHOT

该文件是快照文件。

有关详细信息,请参阅* BSD或Mac OS系统手册页 chflags(2)

在Windows上,以下文件属性常量可用于测试 os.stat() 返回的 st_file_attributes 成员中的位。有关这些常量含义的更多详细信息,请参阅 Windows API文档

stat.FILE_ATTRIBUTE_ARCHIVE
stat.FILE_ATTRIBUTE_COMPRESSED
stat.FILE_ATTRIBUTE_DEVICE
stat.FILE_ATTRIBUTE_DIRECTORY
stat.FILE_ATTRIBUTE_ENCRYPTED
stat.FILE_ATTRIBUTE_HIDDEN
stat.FILE_ATTRIBUTE_INTEGRITY_STREAM
stat.FILE_ATTRIBUTE_NORMAL
stat.FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
stat.FILE_ATTRIBUTE_NO_SCRUB_DATA
stat.FILE_ATTRIBUTE_OFFLINE
stat.FILE_ATTRIBUTE_READONLY
stat.FILE_ATTRIBUTE_REPARSE_POINT
stat.FILE_ATTRIBUTE_SPARSE_FILE
stat.FILE_ATTRIBUTE_SYSTEM
stat.FILE_ATTRIBUTE_TEMPORARY
stat.FILE_ATTRIBUTE_VIRTUAL

3.5 新版功能.