首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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,例如对块和字符设备的测试。

例:

代码语言:javascript
复制
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)

扫码关注腾讯云开发者

领取腾讯云代金券