stat
stat - 解释stat()结果
源代码:
Lib / stat.py
stat
模块定义用于解释结果的常数和函数os.stat()
,os.fstat()
以及os.lstat()
(如果它们存在)。有关完整的详细信息stat()
,fstat()
并lstat()
呼叫,请咨询您的系统的文档。
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_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)
下面所有的变量都只是象征性的指标到返回的10元组os.stat()
,os.fstat()
或os.lstat()
。
stat.ST_MODE
Inode保护模式。
stat.ST_INO
Inode号码。
stat.ST_DEV
设备inode驻留在上。
stat.ST_NLINK
到inode的链接数。
stat.ST_UID
所有者的用户标识。
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
FIFO。
以下标志也可用于模式
参数os.chmod()
:
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_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
。
以下标志可用于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)
。