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() 函数可以方便地获取文件的状态信息,对于构建文件、目录操作程序或者执行文件管理的任务,该函数应该是一个非常有用的工具。