Python os.DirEntry.stat() 方法详解

  • Post category:Python

Python 的 os 模块提供了许多与文件及文件系统相关的操作函数。其中,os.DirEntry.stat() 函数用于获取指定目录下文件的状态信息,包括文件大小、访问时间、修改时间等,返回的是一个 StatResult 对象。

语法及参数

os.DirEntry.stat() 函数的语法如下:

os.DirEntry.stat(follow_symlinks=True)
  • follow_symlinks:bool 类型,是否跟随符号链接。默认值为 True,表示跟随符号链接。

返回值

该函数返回一个 StatResult 对象,包含以下7个元素:

  • st_mode:文件权限位;
  • st_ino:inode 号;
  • st_dev:设备号;
  • st_nlink:硬链接数;
  • st_uid:文件所有者的身份标识符;
  • st_gid:文件所有者的组标识符;
  • st_size:文件大小(以字节为单位);
  • st_atime:最近一次访问时间;
  • st_mtime:最近一次修改时间;
  • st_ctime:最近一次元数据更改时间。

使用方法

import os

with os.scandir('/path/to/dir') as entries:
    for entry in entries:
        if entry.is_file():
            stat_info = entry.stat() # 获取文件状态信息
            print(f"文件名:{entry.name}")
            print(f"文件大小:{stat_info.st_size} 字节")
            print(f"访问时间:{stat_info.st_atime}")
            print(f"修改时间:{stat_info.st_mtime}")
            # 其他属性同理

以上代码使用了 Python 3.6 中新增的 os.scandir() 函数遍历目录,获取目录中所有的文件和子目录。然后,对于每一个文件,使用 entry.is_file() 方法判断是否是文件,然后调用 entry.stat() 方法获取文件的状态信息,并输出文件名、文件大小、访问时间、修改时间等信息。

需要注意的是,如果要获取符号链接指向的原始文件的状态信息,需要将 follow_symlinks 参数设置为 False,例如:

import os

with os.scandir('/path/to/dir') as entries:
    for entry in entries:
        if entry.is_file():
            stat_info = entry.stat(follow_symlinks=False) # 获取原始文件状态信息
            # ...

总之,os.DirEntry.stat() 函数可以方便地获取文件的状态信息,对于构建文件、目录操作程序或者执行文件管理的任务,该函数应该是一个非常有用的工具。