鱼C论坛

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

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

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

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

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

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

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-4 10:26:17 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 21:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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