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()
---即文件的权限位,加上粘性位,设置组ID,设置用户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 新版功能.
下面的所有变量都只是10个元组中的符号索引,由返回 os.stat()
, os.fstat()
或 os.lstat()
.
- stat.ST_MODE¶
inode保护模式。
- stat.ST_INO¶
节点编号。
- 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)上是创建时间(有关详细信息,请参阅平台文档)。
“文件大小”的解释根据文件类型而变化。对于普通文件,这是文件的大小(以字节为单位)。对于大多数风格的UNIX(特别是Linux)下的FIFOS和套接字,“大小”是在调用时等待读取的字节数。 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_IFIFO¶
先进先出法。
- stat.S_IFDOOR¶
门。
3.4 新版功能.
- stat.S_IFPORT¶
事件端口。
3.4 新版功能.
- stat.S_IFWHT¶
Whiteout。
3.4 新版功能.
以下标志也可用于 mode 的参数 os.chmod()
:
- stat.S_ISUID¶
设置UID位。
- stat.S_ISGID¶
设置组ID位。这个位有几个特殊的用途。对于一个目录,它指示将对该目录使用BSD语义:在那里创建的文件从目录继承其组ID,而不是从创建过程的有效组ID继承,并且在那里创建的目录还将获得
S_ISGID
位集。对于没有组执行位的文件 (S_IXGRP
)set,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¶
其他人有执行权限。
以下标志可用于 flags 的参数 os.chflags()
:
- stat.UF_NODUMP¶
不要转储文件。
- stat.UF_IMMUTABLE¶
不能更改文件。
- stat.UF_APPEND¶
文件只能附加到。
- stat.UF_OPAQUE¶
当通过联合堆栈查看时,目录是不透明的。
- stat.UF_NOUNLINK¶
不能重命名或删除文件。
- 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_NOUNLINK¶
不能重命名或删除文件。
- stat.SF_SNAPSHOT¶
该文件是快照文件。
见 * BSD或Mac OS系统手册页 chflags(2) 更多信息。
在Windows上,当测试 st_file_attributes
成员返回者 os.stat()
. 见 Windows API documentation 有关这些常量含义的更多详细信息。
- 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 新版功能.
在Windows上,可以将以下常量与 st_reparse_tag
成员返回者 os.lstat()
. 这些是众所周知的常数,但不是一个详尽的列表。