os.stat()os.fstat()os.lstat()解释结果(4)Python文件和目录访问模块(必读进阶Python教程)(参考资料)
该stat
模块定义的常量和函数用于解释的结果os.stat()
,os.fstat()
以及os.lstat()
(如果存在的话)。有关完整的详细信息stat()
,fstat()
并 lstat()
呼叫,请咨询您的系统的文档。
在3.4版中更改: stat模块由C实现支持。
该stat
模块定义了以下函数来测试特定的文件类型:
stat.
S_ISDIR
(模式)- 如果模式来自目录,则返回非零值。
stat.
S_ISCHR
(模式)- 如果模式来自字符特殊设备文件,则返回非零值。
stat.
S_ISBLK
(模式)- 如果模式来自块特殊设备文件,则返回非零值。
stat.
S_ISREG
(模式)- 如果模式来自常规文件,则返回非零值。
stat.
S_ISFIFO
(模式)- 如果模式来自FIFO(命名管道),则返回非零值。
stat.
S_ISLNK
(模式)- 如果模式来自符号链接,则返回非零。
stat.
S_ISSOCK
(模式)- 如果模式来自套接字,则返回非零值。
stat.
S_ISDOOR
(模式)- 如果模式来自门,则返回非零值。
版本3.4中的新功能。
stat.
S_ISPORT
(模式)- 如果模式来自事件端口,则返回非零值。
版本3.4中的新功能。
stat.
S_ISWHT
(模式)- 如果模式来自白名,则返回非零。
版本3.4中的新功能。
为文件模式的更一般操作定义了两个附加功能:
stat.
S_IMODE
(模式)- 返回文件模式中可以设置的部分
os.chmod()
– 即文件的权限位,加上sticky位,set-group-id和set-user-id位(在支持它们的系统上)。
stat.
S_IFMT
(模式)- 返回描述文件类型的文件模式部分(由
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
(模式)- 将文件模式转换为’-rwxrwxrwx’形式的字符串。
版本3.3中的新功能。
在版本3.4中更改:该功能支持
S_IFDOOR
,S_IFPORT
和S_IFWHT
。
下面的所有变量都只是由返回的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
- 所有者的用户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
- FIFO。
stat.
S_IFDOOR
- 门。
版本3.4中的新功能。
stat.
S_IFPORT
- 活动端口。
版本3.4中的新功能。
stat.
S_IFWHT
- 白化。
版本3.4中的新功能。
注意
S_IFDOOR
,S_IFPORT
或者S_IFWHT
当平台不支持文件类型时定义为0。
以下标志也可以在mode参数中使用os.chmod()
:
stat.
S_ISUID
- 设置UID位。
stat.
S_ISGID
- Set-group-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
- System 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)。
在Windows上,在测试st_file_attributes
返回的成员中的位时,可以使用以下文件属性常量os.stat()
。有关 这些常量含义的更多详细信息,请参阅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中的新功能。