鱼C论坛

 找回密码
 立即注册
查看: 2655|回复: 1

[技术交流] Python 小技巧 064:获取文件的详细信息

[复制链接]
发表于 2020-2-13 17:20:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Python 获取文件的详细信息


众所周知,内置模块 os 提供了非常丰富的方法来处理目录和文件。今天我们就来学习利用 os.stat() 获取指定文件的基本信息(其功能等同于 C API 中的 stat() )。

os.stat() 语法格式

os.stat() 的语法格式如下:

  1. 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() 使用示例

  1. from os import stat
  2. filename = input("请输入文件路径:")
  3. fileinfo = stat(filename)
  4. print("索引号:", fileinfo.st_ino)
  5. print("设备名:", fileinfo.st_dev)
  6. print("文件大小:", fileinfo.st_size, "字节")
  7. print("最后一次访问时间:", fileinfo.st_atime)
  8. print("最后一次修改时间:", fileinfo.st_mtime)
  9. print("最后一次状态变化时间:", fileinfo.st_ctime)
复制代码


执行结果:

  1. 请输入文件路径:E:\1.txt
  2. 索引号: 562949953554448
  3. 设备名: 1679113640
  4. 文件大小: 169770 字节
  5. 最后一次访问时间: 1581584422.249313
  6. 最后一次修改时间: 1580107624.840809
  7. 最后一次状态变化时间: 1581584422.249313
复制代码


由于上面的结果中的时间和字节数都是一长串的数字,为了让显示更加直观,可以对这样的数值进行格式化:

  1. import time
  2. from os import stat


  3. def format_time(sec):
  4.     return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(sec))


  5. def format_byte(number):
  6.     res = []
  7.     for scale, label in [(1024 ** 3, " GB"), (1024 ** 2, " MB"), (1024, " KB"), (1, " 字节")]:
  8.         if number >= scale:
  9.             res.append(str(number // scale) + label)
  10.             number %= scale
  11.     return " ".join(res)


  12. filename = input("请输入文件路径:")
  13. fileinfo = stat(filename)
  14. print("索引号:", fileinfo.st_ino)
  15. print("设备名:", fileinfo.st_dev)
  16. print("文件大小:", format_byte(fileinfo.st_size))
  17. print("最后一次访问时间:", format_time(fileinfo.st_atime))
  18. print("最后一次修改时间:", format_time(fileinfo.st_mtime))
  19. print("最后一次状态变化时间:", format_time(fileinfo.st_ctime))
复制代码


执行结果:

  1. 请输入文件路径:E:\1.txt
  2. 索引号: 562949953554448
  3. 设备名: 1679113640
  4. 文件大小: 165 KB 810 字节
  5. 最后一次访问时间: 2020-02-13 17:00:22
  6. 最后一次修改时间: 2020-01-27 14:47:04
  7. 最后一次状态变化时间: 2020-02-13 17:00:22
复制代码

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-4 10:26:17 | 显示全部楼层
学习
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-19 16:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表