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)

如果mode来自一个目录,返回非零。

stat.S_ISCHR(mode)

如果mode来自特殊的字符设备文件,返回非零。

stat.S_ISBLK(mode)

如果mode来自特殊的块设备文件,返回非零。

stat.S_ISREG(mode)

如果mode来自一个正常的文件,返回非零。

stat.S_ISFIFO(mode)

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

stat.S_ISLNK(mode)

如果mode来自一个符号链接,返回非零。

stat.S_ISSOCK(mode)

如果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()

stat.ST_MODE

inode 保护模式。

stat.ST_INO

inode 节点号。

stat.ST_DEV

inode 驻留的设备。

inode 的链接数。

stat.ST_UID

所有者的用户ID。

stat.ST_GID

所有者的组ID。

stat.ST_SIZE

一个普通文件的字节大小;等待某些特殊文件的数据量。

stat.ST_ATIME

上次访问的时间。

stat.ST_MTIME

最后一次修改的时间。

stat.ST_CTIME

由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,在其它系统上(如Windows)是创建时间(详细信息参见平台的文档)。

"文件大小"的解释与文件类型有关。对于普通的文件,这是文件以字节为单位的大小。For FIFOs and sockets under most flavors of Unix (including Linux in particular), the “size” is the number of bytes waiting to be read at the time of the call to os.stat(), os.fstat(), or os.lstat(); this can sometimes be useful, especially for polling one of these special files after a non-blocking open. 其他字符和块设备的大小字段的含义变化更大,具体取决于底层的系统调用的实现。

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

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

stat.S_IFSOCK

套接字。

stat.S_IFLNK

符号链接。

stat.S_IFREG

常规文件。

stat.S_IFBLK

块设备。

stat.S_IFDIR

目录。

stat.S_IFCHR

字符设备。

stat.S_IFIFO

先进先出。

stat.S_IFDOOR

门。

版本3.4中的新功能。

stat.S_IFPORT

事件端口。

版本3.4中的新功能。

stat.S_IFWHT

Whiteout。

版本3.4中的新功能。

注意

当平台不支持文件类型时,S_IFDOORS_IFPORTS_IFWHT

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

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

S_IRUSR的Unix V7同义词。

stat.S_IWRITE

S_IWUSR的Unix V7同义词。

stat.S_IEXEC

S_IXUSR的Unix V7同义词。

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

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中的新功能。