源程序代码:Lib/stat.py
stat模块定义解析os.stat()、os.fstat()和os.lstat()的结果(如果它们存在)的常量和函数。有关stat()、fstat()和lstat()调用的完整细节,请参阅您的系统文档。
stat模块定义以下函数来测试特定的文件类型:
如果mode来自一个目录,返回非零。
如果mode来自特殊的字符设备文件,返回非零。
如果mode来自特殊的块设备文件,返回非零。
如果mode来自一个正常的文件,返回非零。
如果mode来自FIFO(命名管道),返回非零。
如果mode来自一个符号链接,返回非零。
如果mode来自一个套接字,返回非零。
还附加定义两个函数用于更一般的文件模式的操作:
返回可以通过os.chmod()设置的文件模式部分 — 也就是说,文件的权限位,再加上sticky 位、set-group-id和set-user-id 位(在支持他们的系统上)。
返回描述文件类型的文件模式部分(使用上面的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()只是象征性的索引。
Inode 保护模式。
inode 节点号。
设备 inode 驻留在上。
Inode 的链接数。
为所有者的用户 id。
组的所有者 id。
大小 (以字节为单位) 的是普通的文件 ;在一些特殊文件等的数据量。
上次访问的时间。
最后一次修改的时间。
由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,在其它系统上(如Windows)是创建时间(详细信息参见平台的文档)。
"文件大小"的解释与文件类型有关。对于普通的文件,这是文件以字节为单位的大小。在大多数的Unix系列(特别是Linux)下,对于FIFOs和套接字,"大小"是在调用os.stat()、 os.fstat()或os.lstat()时正在等待读取的字节数;这有时会有用,尤其是在一次非阻塞的打开之后查询其中的一个这些特殊文件。其他字符和块设备的大小字段的含义变化更大,具体取决于底层的系统调用的实现。
下面的变量定义在ST_MODE字段中使用的标志。
使用上述函数比使用下面第一组标志更便携:
套接字。
符号链接。
常规文件。
块设备。
目录。
字符设备。
先进先出。
以下标志也可以用于os.chmod()的mode 参数:
设置 UID 位。
设置组 ID 位。这一点有几种特殊用途。对于一个目录,它指示 BSD 语义是要用于该目录: 那里创建的文件继承他们的组 ID 的目录,不是来自这个创造的过程中,有效的组 ID,创建那里目录也将获得设置了S_ISGID位。做一个文件组执行位 (S_IXGRP) 都不会成立,集组 ID 位指示强制性的文件记录锁定 (见S_ENFMT)。
粘滞位。当这位被设置在一个目录上,这意味着在该目录中的文件可以被重命名或删除仅由该文件的所有者、 由目录的所有者或特权的进程。
文件所有者权限掩码。
所有者拥有读取权限。
所有者具有写入权限。
所有者具有执行权限。
组权限掩码。
组具有读取权限。
组具有写入权限。
组具有执行权限。
他人 (不在组中) 的权限的掩码。
其他具有读取权限。
其他具有写入权限。
别人有执行权限。
在os.chflags() flags参数,可以使用以下标志:
转储文件。
不能更改该文件。
该文件可能只被追加到。
该目录是不透明的通过联盟的堆栈查看时。
该文件可能不能重命名或删除。
该文件存储压缩 (Mac OS X 10.6+)。
该文件不应显示在 GUI (Mac OS X 10.5+) 中。
该文件可能被存档。
不能更改该文件。
该文件可能只被追加到。
该文件可能不能重命名或删除。
该文件是一个快照文件。
看到 * BSD 或 Mac OS 系统人页chflags(2)的详细信息。