马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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
|