On this page
10.3. stat —解释 stat()结果
源代码: Lib/stat.py
stat模块定义用于解释os.stat(),os.fstat()和os.lstat()(如果存在)的结果的常量和函数。有关stat()
,fstat()
和lstat()
调用的完整详细信息,请查阅系统的文档。
stat模块定义了以下Function来测试特定的文件类型:
stat.
S_ISDIR
(模式)- 如果模式来自目录,则返回非零值。
stat.
S_ISCHR
(模式)- 如果模式来自字符特殊设备文件,则返回非零值。
stat.
S_ISBLK
(模式)- 如果模式来自块特殊设备文件,则返回非零值。
stat.
S_ISREG
(模式)- 如果模式来自常规文件,则返回非零值。
stat.
S_ISFIFO
(模式)- 如果模式来自 FIFO(命名管道),则返回非零值。
stat.
S_ISLNK
(模式)- 如果模式来自符号链接,则返回非零值。
stat.
S_ISSOCK
(模式)- 如果模式来自套接字,则返回非零值。
定义了两个附加Function,用于对文件模式进行更常规的操作:
stat.
S_IMODE
(模式)- 返回文件模式中可以由os.chmod()设置的部分,即文件的权限位,加上粘性位,set-group-id 和 set-user-id 位(在支持它们的系统上)。
stat.
S_IFMT
(模式)- 返回文件模式中描述文件类型的部分(由上面的
S_IS*()
函数使用)。
- 返回文件模式中描述文件类型的部分(由上面的
通常,您可以使用os.path.is*()
函数来测试文件的类型。当您对同一个文件进行多次测试并希望避免每个测试stat()
系统调用的开销时,此处的Function很有用。当检查有关os.path未处理的文件的信息(例如对块和字符设备的测试)时,这些Function也很有用。
Example:
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)
以下所有变量都是os.stat(),os.fstat()或os.lstat()返回的 10Tuples 的简单符号索引。
stat.
ST_MODE
- 索引节点保护模式。
stat.
ST_INO
- Inode number.
stat.
ST_DEV
- 设备 inode 驻留在。
stat.
ST_NLINK
- 到索引节点的链接数。
stat.
ST_UID
- 所有者的用户标识。
stat.
ST_GID
- 所有者的组标识。
stat.
ST_SIZE
- 普通文件的大小(以字节为单位);await 某些特殊文件的数据量。
stat.
ST_ATIME
- 上次访问时间。
stat.
ST_MTIME
- 上次修改时间。
stat.
ST_CTIME
- os 报告的“ ctime”。在某些系统(例如 Unix)上,是上一次元数据更改的时间,而在其他系统(例如 Windows)上,则是创建时间(有关详细信息,请参见平台文档)。
“文件大小”的解释根据文件类型而变化。对于纯文件,这是文件大小,以字节为单位。对于大多数 Unix 系统(尤其是 Linux)下的 FIFO 和套接字,“大小”是在调用os.stat(),os.fstat()或os.lstat()时 await 读取的字节数;有时这很有用,特别是在非阻塞打开后轮询这些特殊文件之一时。其他字符和块设备的 size 字段的含义变化更多,具体取决于基础系统调用的实现。
以下变量定义了ST_MODE字段中使用的标志。
与使用第一组标志相比,使用上述Function更方便:
stat.
S_IFSOCK
- Socket.
stat.
S_IFLNK
- Symbolic link.
stat.
S_IFREG
- Regular file.
stat.
S_IFBLK
- Block device.
stat.
S_IFDIR
- Directory.
stat.
S_IFCHR
- Character device.
stat.
S_IFIFO
- FIFO.
以下标志也可以在os.chmod()的* mode *参数中使用:
stat.
S_ISUID
- 将 UID 位置 1.
stat.
S_ISGID
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
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
- pass联合堆栈查看时,该目录是不透明的。
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)*。