美文网首页
python3从零学习-5.4.4、解析stat()结果

python3从零学习-5.4.4、解析stat()结果

作者: 山海皆可平z | 来源:发表于2020-05-19 07:21 被阅读0次

    源代码: Lib/stat.py

        stat 模块定义了一些用于解析 os.stat(), os.fstat() 和 os.lstat()输出结果的常量和函数。 

    在 3.4 版更改: stat 模块是通过 C 实现来支持的

    stat 模块定义了以下函数来检测特定文件类型:

    stat.S_ISDIR(mode)

    如果 mode 来自一个目录则返回非零值。

    stat.S_ISCHR(mode)

    如果 mode 来自一个字符专属的设备文件则返回非零值。

    stat.S_ISBLK(mode)

    如果 mode 来自一个块特殊设备文件则返回非零值。

    stat.S_ISREG(mode)

    如果 mode 来自一个常规文件则返回非零值。

    stat.S_ISFIFO(mode)

    如果 mode 来自一个 FIFO (命名管道) 则返回非零值。

    stat.S_ISLNK(mode)

    如果 mode 来自一个符号链接则返回非零值。

    stat.S_ISSOCK(mode)

    如果 mode 来自一个套接字则返回非零值。

    stat.S_ISDOOR(mode)

    如果 mode 来自一个门则返回非零值。

    3.4 新版功能.

    stat.S_ISPORT(mode)

    如果 mode 来自一个事件端口则返回非零值。

    3.4 新版功能.

    stat.S_ISWHT(mode)

    如果 mode 来自一个白输出则返回非零值。

    3.4 新版功能.

    定义了两个附加函数用于对文件模式进行更一般化的操作:

    stat.S_IMODE(mode)

    返回文件模式中可由 os.chmod() 进行设置的部分 — 即文件的 permission 位,加上 sticky 位、set-group-id 以及 set-user-id 位(在支持这些部分的系统上)。

    stat.S_IFMT(mode)

    返回文件模式中描述文件类型的部分(供上面的 S_IS*() 函数使用)。

        通常,你应当使用 os.path.is*() 函数来检测文件的类型;这里提供的函数则适用于当你要对同一文件执行多项检测并且希望避免每项检测的 stat() 系统调用开销的情况。 这些函数也适用于检测有关未被 os.path 处理的信息,例如检测块和字符设备等。

    示例:

    importos,sys

    fromstatimport*

    defwalktree(top, callback):

       '''recursively descend the directory tree rooted at top,

           calling the callback function for each regular file'''

       forfinos.listdir(top):

            pathname=os.path.join(top, f)

            mode=os.stat(pathname).st_mode

           ifS_ISDIR(mode):

               # It's a directory, recurse into it

                walktree(pathname, callback)

           elifS_ISREG(mode):

               # It's a file, call the callback function

                callback(pathname)

           else:

               # Unknown file type, print a message

               print('Skipping%s'%pathname)

    defvisitfile(file):

       print('visiting', file)

    if__name__=='__main__':

        walktree(sys.argv[1], visitfile)

    另外还提供了一个附加的辅助函数用来将文件模式转换为人类易读的字符串:

    stat.filemode(mode)

    将文件模式转换为 ‘-rwxrwxrwx’ 形式的字符串。

    3.3 新版功能.

    在 3.4 版更改: 此函数支持 S_IFDOOR, S_IFPORT and S_IFWHT。

    以下所有变量是一些简单的符号索引,用于访问 os.stat(), os.fstat() 或 os.lstat() 所返回的 10 条目元组。

    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

    先进先出

    stat.S_IFDOOR

    3.4 新版功能.

    stat.S_IFPORT

    事件端口。

    3.4 新版功能.

    stat.S_IFWHT

    白输出。

    3.4 新版功能.

    注解:S_IFDOOR, S_IFPORT or S_IFWHT 等文件类型在不受系统平台支持时会被定义为 0。

    以下旗标还可以 os.chmod() 的在 mode 参数中使用:

    stat.S_ISUID

    设置UID位。

    stat.S_ISGID

    设置分组 ID 位。 这个位有几种特殊用途。 对于目录它表示该目录将使用 BSD 语义:在其中创建的文件将从目录继承其分组 ID,而不是从创建进程的有效分组 ID 继承,并且在其中创建的目录也将设置 S_ISGID 位。 对于没有设置分组执行位 (S_IXGRP) 的文件,设置分组 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 的同义词。

    以下旗标可以在 os.chflags() 的 flags 参数中使用:

    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

    文件有一个快照文件

    在 Windows 上,以下文件属性常量可用于检测 os.stat() 所返回的 st_file_attributes 成员中的位。 

    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

    相关文章

      网友评论

          本文标题:python3从零学习-5.4.4、解析stat()结果

          本文链接:https://www.haomeiwen.com/subject/wtbqohtx.html