|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
Python 获取文件的详细信息
众所周知,内置模块 os 提供了非常丰富的方法来处理目录和文件。今天我们就来学习利用 os.stat() 获取指定文件的基本信息(其功能等同于 C API 中的 stat() )。
os.stat() 语法格式
os.stat() 的语法格式如下:
- stat(path, *, dir_fd=None, follow_symlink=True)
复制代码
其中 path 指定的是文件名,可以是相对路径,也可以是绝对路径。
dir_fd 和 follow_symlink 这两个参数保持默认就行。
os.stat() 的返回值
os.stat() 的返回值为一个对象,这个对象包含一些文件基本信息的属性(见下表)。
属性名 | 说明 | st_mode | 保护模式 | st_dev | 设备名 | st_ino | 索引号 | st_uid | 用户 ID | st_nlink | 硬链接号(被连接数目) | st_gid | 组 ID | st_size | 文件大小,单位为字节 | st_atime | 文件的最后一次访问时间 | st_mtime | 文件的最后一次修改时间 | st_ctime | 文件的最后一次状态变化的时间 |
os.stat() 使用示例
- from os import stat
- filename = input("请输入文件路径:")
- fileinfo = stat(filename)
- print("索引号:", fileinfo.st_ino)
- print("设备名:", fileinfo.st_dev)
- print("文件大小:", fileinfo.st_size, "字节")
- print("最后一次访问时间:", fileinfo.st_atime)
- print("最后一次修改时间:", fileinfo.st_mtime)
- print("最后一次状态变化时间:", fileinfo.st_ctime)
复制代码
执行结果:
- 请输入文件路径:E:\1.txt
- 索引号: 562949953554448
- 设备名: 1679113640
- 文件大小: 169770 字节
- 最后一次访问时间: 1581584422.249313
- 最后一次修改时间: 1580107624.840809
- 最后一次状态变化时间: 1581584422.249313
复制代码
由于上面的结果中的时间和字节数都是一长串的数字,为了让显示更加直观,可以对这样的数值进行格式化:
- import time
- from os import stat
- def format_time(sec):
- return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(sec))
- def format_byte(number):
- res = []
- for scale, label in [(1024 ** 3, " GB"), (1024 ** 2, " MB"), (1024, " KB"), (1, " 字节")]:
- if number >= scale:
- res.append(str(number // scale) + label)
- number %= scale
- return " ".join(res)
- filename = input("请输入文件路径:")
- fileinfo = stat(filename)
- print("索引号:", fileinfo.st_ino)
- print("设备名:", fileinfo.st_dev)
- print("文件大小:", format_byte(fileinfo.st_size))
- print("最后一次访问时间:", format_time(fileinfo.st_atime))
- print("最后一次修改时间:", format_time(fileinfo.st_mtime))
- print("最后一次状态变化时间:", format_time(fileinfo.st_ctime))
复制代码
执行结果:
- 请输入文件路径:E:\1.txt
- 索引号: 562949953554448
- 设备名: 1679113640
- 文件大小: 165 KB 810 字节
- 最后一次访问时间: 2020-02-13 17:00:22
- 最后一次修改时间: 2020-01-27 14:47:04
- 最后一次状态变化时间: 2020-02-13 17:00:22
复制代码 |
|