stat—解释stat()结果

资源代码:Lib/stat.py

    stat模块定义了常数和函数,并用这些来解释os.stat()、os.fstat()、和os.lstat()的结果(如果这些函数在该平台上存在的话)。如果需要关于stat()、fstat()/和lstat()的完整细节,请查询自己电脑的系统文档。

    stat模块定义了以下函数用于测试特定的文件类型:

stat. S_ISDIR(mode)

    如果mode来自于目录,返回non-zero。

 

stat. S_ISCHR(mode)

    如果mode来自于一个字符专用设备,返回non-zero。

 

stat. S_ISBLK(mode)

    如果mode来自于一个块设备专用文件,返回non-zero。

 

stat. S_ISREG(mode)

    如果mode来自于一个常规文件,返回non-zero。

 

stat. S_ISIFO(mode)

    如果mode来自于一个FIFO(被命名为管道),返回non-zero。

 

stat. S_ISLNK(mode)

    如果mode来自于一个符号链接,返回non-zero。

 

stat. S_ISSOCK(mode)

    如果mode来自于socket程序,返回non-zero。

 

stat. S_ISDOOR(mode)

    如果mode来自于一个内部门door,返回non-zero。

 

stat. S_ISPORT(mode)

    如果mode来自于一个事件端口,返回non-zero。

 

stat. S_ISWHT(mode)

    如果mode来自于whiteout,返回non-zero。

 

    两个额外的函数被定义用于更多的系统模式一般操作:

stat. S_IMODE(mode)

    返回文件的模式的一部分,它可以被os. chmod()建立—这是,文件的容许位,扩展严格的为,建立组id,并且建立用户id(在可以支持它们的系统上)。

 

sta. 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’形式的字符串。

 

    下方所有的变量是由os.stat()、os.fstat()或os.lstat()返回的10个元组的符号索引。

stat. ST_MODE

    lnode节点保护模式。

 

stat. ST_INO

    lnode节点数字。

 

stat.. ST_DEV

    设备inode节点居住在。

 

stat. ST_NLINK

    链接到inode节点的数字。

 

stat. ST_UID

    拥有者的用户id。

 

stat. ST_GID

    拥有者的组id。

 

stat. ST_SIZE

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

 

stat. ST_ATIME

    最后一次进入的时间。

 

stat. ST_MTIME

    最后一次修改的时间。

 

stat. ST_CTIME

    “ctime”是作为操作系统的报告。在一些系统中(比如Unix)是媒体数据最后修正的时间;再另一些操作系统中(比如Windows),是创建时间(细节请参见平台文档)。

 

    “file size(文件大小)”的解释随文件类型而改变。对于普通文件,大小是以字节计算的。对于FIFOs和socket,在大多数系统下,“大小”是该时刻调用os.stat()、os.fstat或os.lstat()所产生等待读取的数据的字节数;这在有些时候是十分有用的,特别是轮训一些特定文件中的一个在非阻塞时刻。大小领域的意义对于其他字节和块设备变化十分大,它取决于底层系统的调用实现。

 

    下列的变量定义了用于ST_MODE领域的标志。

    使用下面的函数比使用新建的标志更加便捷:

stat. S_IFSOCK

    socket(插口程序设备,中文无准确对应翻译)。

 

stat. S_IFLNK

    符号链接。

 

stat. S_IFREG

    合规文件。

 

stat. S_IFBLK

    块设备。

 

stat. S_IFDIR

    目录。

 

stat. S_IFCHR

    字符设备。

 

stat. S_IFIFP

    FIFO。

 

stat. S_IFDOOR

    Door。

 

stat. S_IFPORT

    事件端口。

 

stat. S_IFWHT

    whiteout。

 

注意:当平台不支持这些文件类型时,S_IFDOOR、S_IFPORT或S_IFWHT被定义为0。

    下列的标志也可用于os.chmod()的mode参数:

stat. S__ISUID

    建立UID位。

 

stat. S_ISGID

    建立组id位。这个位有一系列特殊的应用。对于一个目录,它表明BSD语义在这个目录中应用:在这里创建的文件从目录中继承它们的组id,组id而不是来自来自于创建过程的有效组id,并且在这里创建的目录也将建立S_ISGID位。对于一个文件,它不含有建立组执行位(S_IXGRP),建立组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_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_NOUNLINK

    该文件可能不允许被重命名或删除。

 

stat. UF_COMPRESSED

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

 

stat. UF_HIDDEN

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

 

stat. SF_ARCHIVED

    该文件应该被归档。

 

stat. SF_IMMUTABLE

    该文件可能不被修改。

 

stat. SF_APPEND

    该文件只能被追加。

 

stat. SF_NOUNLINK

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

 

stat. SF_SNAPSHOT

    该文件为快照文件。

 

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

    在Windows下,下列文件属性常量可用于当st_file_attributes成员由os.stat()返回时,测试位被使用的情况。参见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