stat — 解释 stat() 结果 — Python 文档
stat — 解释 stat() 结果
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() 设置的文件模式部分——即文件的权限位,加上粘性位、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 版中的新功能。
下面的所有变量都是由 os.stat()、os.fstat() 或 os.lstat() 返回的 10 元组的简单符号索引.
- stat.ST_MODE
- 节点保护模式。
- 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)下的 FIFO 和套接字,“大小”是在调用 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
- 先进先出。
- stat.S_IFDOOR
门。
3.4 版中的新功能。
- stat.S_IFPORT
事件端口。
3.4 版中的新功能。
- stat.S_IFWHT
白化。
3.4 版中的新功能。
以下标志也可以在 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_IREAD
- S_IRUSR 的 Unix V7 同义词。
- stat.S_IWRITE
- S_IWUSR 的 Unix V7 同义词。
- stat.S_IEXEC
- S_IXUSR 的 Unix V7 同义词。
以下标志可以在 os.chflags() 的 flags 参数中使用:
- stat.UF_NODUMP
- 不要转储文件。
- stat.UF_IMMUTABLE
- 该文件不得更改。
- stat.UF_APPEND
- 该文件只能附加到。
- stat.UF_OPAQUE
- 通过联合堆栈查看时,该目录是不透明的。
- stat.UF_NOUNLINK
- 该文件不能被重命名或删除。
- stat.UF_COMPRESSED
- 文件以压缩形式存储(macOS 10.6+)。
- stat.UF_HIDDEN
- 该文件不应显示在 GUI (macOS 10.5+) 中。
- stat.SF_ARCHIVED
- 该文件可能已存档。
- stat.SF_IMMUTABLE
- 该文件不得更改。
- stat.SF_APPEND
- 该文件只能附加到。
- stat.SF_NOUNLINK
- 该文件不能被重命名或删除。
- stat.SF_SNAPSHOT
- 该文件是一个快照文件。
有关更多信息,请参阅 *BSD 或 macOS 系统手册页 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 版中的新功能。
在 Windows 上,以下常量可用于与 os.lstat() 返回的 st_reparse_tag
成员进行比较。 这些是众所周知的常量,但并不是详尽的列表。
- stat.IO_REPARSE_TAG_SYMLINK
stat.IO_REPARSE_TAG_MOUNT_POINT
stat.IO_REPARSE_TAG_APPEXECLINK 3.8 版中的新功能。