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