Python文件属性、文件摘要
原文链接:http://www.juzicode.com/python-tutorial-file-attribute-digest
1、文件大小、时间
文件的大小,修改时间、访问时间、创建时间需要使用到os.stat()方法,该方法返回一个 os.stat_result 的实例,该实例的st_mtime、 st_atime、st_ctime等属性表示文件的修改时间、访问文件、创建时间等。
#juzicode.com / VX:桔子code
import time
import os
filename = 'lena.jpg'
fa = os.stat(filename)
print('type fa:',type(fa))
print('fa:',fa)
print('fa.st_mtime:',fa.st_mtime)
print('fa.st_atime:',fa.st_atime)
print('fa.st_ctime:',fa.st_ctime)
print('fa.st_size:',fa.st_size)
print('fa.st_file_attributes:',fa.st_file_attributes)
运行结果:
type fa: <class 'os.stat_result'>
fa: os.stat_result(st_mode=33206, st_ino=844424930139442, st_dev=1254643550, st_nlink=1, st_uid=0, st_gid=0, st_size=91814, st_atime=1653837972, st_mtime=1519317512, st_ctime=1652548643)
fa.st_mtime: 1519317512.0
fa.st_atime: 1653837972.0751934
fa.st_ctime: 1652548643.6513824
fa.st_size: 91814
fa.st_file_attributes: 32
上述mtime等数值表示从1970-1-1 0:0:0UTC开始的秒数,下面的方法可以进一步将其转换为可读格式:
ts = time.localtime(fa.st_mtime)
ts_str = time.strftime('fa.st_mtime:%Y-%m-%d,%H:%M:%S',ts)
print(ts_str)
ts = time.localtime(fa.st_atime)
ts_str = time.strftime('fa.st_atime:%Y-%m-%d,%H:%M:%S',ts)
print(ts_str)
ts = time.localtime(fa.st_ctime)
ts_str = time.strftime('fa.st_ctime:%Y-%m-%d,%H:%M:%S',ts)
print(ts_str)
运行结果:
fa.st_mtime:2018-02-23,00:38:32
fa.st_atime:2022-05-29,23:26:12
fa.st_ctime:2022-05-15,01:17:23
2、hash码计算
可以使用hashlib模块计算文件的hash码,hashlib中可以计算sha1,sha256,sha384,sha512等hash码。
使用的方法如下,这里以sha1为例,第一种方法用sha1()方法创建一个实例,在创建时传入要计算的数据,然后用hexdigest()或digest()返回其摘要值。
#juzicode.com / VX:桔子code
import hashlib
sha = hashlib.sha1(b'abcdefghijklmnopqrstuvwxyz')
print('type sha:',type(sha))
print('sha:',sha)
print('type hexdigest:',type(sha.hexdigest()))
print('sha:',sha.hexdigest())
print('type digest:',type(sha.digest()))
print('sha:',sha.digest())
运行结果:
type sha: <class '_hashlib.HASH'>
sha: <sha1 HASH object @ 0x000002A28EEA79B0>
type hexdigest: <class 'str'>
sha: 32d10c7b8cf96570ca04ce37f2a19d84240d3a89
type digest: <class 'bytes'>
sha: b'2\xd1\x0c{\x8c\xf9ep\xca\x04\xce7\xf2\xa1\x9d\x84$\r:\x89'
第二种方法用sha1()方法创建一个实例,在创建时不需要传入要计算的数据,再使用update方法更新传入的数据,然后用hexdigest()或digest()返回其摘要值。
import hashlib
sha = hashlib.sha1()
sha.update(b'abcdefghijklmnopqrstuvwxyz')
print('sha:',sha.hexdigest())
print('sha:',sha.digest())
运行结果:
sha: 32d10c7b8cf96570ca04ce37f2a19d84240d3a89
sha: b'2\xd1\x0c{\x8c\xf9ep\xca\x04\xce7\xf2\xa1\x9d\x84$\r:\x89'
如果要计算的是文件的hash码,则将上面例子中的数据更换为从文件中获取的数据即可:
import hashlib
sha = hashlib.sha1()
with open('logo.png','rb') as pr:sha.update(pr.read()) # 从文件中读取数据print('sha:',sha.hexdigest())print('sha:',sha.digest())
运行结果:
sha: 35137c7716fd8790bec01b27a3ea65b0c795d520
sha: b"5\x13|w\x16\xfd\x87\x90\xbe\xc0\x1b'\xa3\xeae\xb0\xc7\x95\xd5 "
sha256、sha512、sha384、md5等其他几种文件摘要的例子:
#juzicode.com / VX:桔子code
import hashlib
with open('logo.png','rb') as pr:data = pr.read()sha = hashlib.sha1()sha.update(data)print('sha1:',sha.hexdigest())print('sha1:',sha.digest())sha = hashlib.sha256()sha.update(data)print('sha256:',sha.hexdigest())print('sha256:',sha.digest())sha = hashlib.sha384()sha.update(data)print('sha384:',sha.hexdigest())print('sha384:',sha.digest())sha = hashlib.sha512()sha.update(data)print('sha512:',sha.hexdigest())print('sha512:',sha.digest())sha = hashlib.md5()sha.update(data)print('md5:',sha.hexdigest())print('md5:',sha.digest())
运行结果:
sha1: 35137c7716fd8790bec01b27a3ea65b0c795d520
sha1: b"5\x13|w\x16\xfd\x87\x90\xbe\xc0\x1b'\xa3\xeae\xb0\xc7\x95\xd5 "
sha256: 5eaf9ffa04324260feba2be8ed4e538df07da07c4bf20faee656208829293c82
sha256: b'^\xaf\x9f\xfa\x042B`\xfe\xba+\xe8\xedNS\x8d\xf0}\xa0|K\xf2\x0f\xae\xe6V \x88))<\x82'
sha384: f52fbc4363bbf82255e3126d9e69a51692d8491a8bf3dfb85b4fb8357417499887e669d78f0888aafc9a2a7ad06ae763
sha384: b'\xf5/\xbcCc\xbb\xf8"U\xe3\x12m\x9ei\xa5\x16\x92\xd8I\x1a\x8b\xf3\xdf\xb8[O\xb85t\x17I\x98\x87\xe6i\xd7\x8f\x08\x88\xaa\xfc\x9a*z\xd0j\xe7c'
sha512: 3b204476201e02dff59602d346ab774bf5369e06a415fdbbb6dd6dd670547ade0c4aba3f1295713c42d3f847388b5fdc6aabe572b9991f01821a0cdc28ad2e1e
sha512: b'; Dv \x1e\x02\xdf\xf5\x96\x02\xd3F\xabwK\xf56\x9e\x06\xa4\x15\xfd\xbb\xb6\xddm\xd6pTz\xde\x0cJ\xba?\x12\x95q<B\xd3\xf8G8\x8b_\xdcj\xab\xe5r\xb9\x99\x1f\x01\x82\x1a\x0c\xdc(\xad.\x1e'
md5: ec14c325d9e70ceada9b6e67d894ccd7
md5: b'\xec\x14\xc3%\xd9\xe7\x0c\xea\xda\x9bng\xd8\x94\xcc\xd7'
3、crc32计算
crc32的计算需要使用到zlib模块的crc32()函数:
#juzicode.com / VX:桔子code
import zlib
with open('logo.png','rb') as pr:data = pr.read()value = zlib.crc32(data)print('crc32:',value)
运行结果:
<class 'int'>
crc32: 3657216124
Python文件属性、文件摘要相关推荐
- python对文件的读操作方法有哪些-python--文件的读写操作
Python提供了必要的函数和方法进行默认情况下的文件基本操作 文件打开方式: open(name[,mode[buf]]) name:文件路径 mode:打开方式 buf:缓冲buffering大小 ...
- python下载大文件-python 大文件
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 大文件上传服务一.前端(http:fex.baidu.comwebuploade ...
- python将字符串s和换行符写入文件fp_【python】文件操作
本文内容包括: 文件的读写操作 文件的各种系统操作 存储对象 遍历文件 上代码: import os import os.path rootdir = "d:/code/su/data&qu ...
- ASP.NET -- WebForm -- Cookie的使用 应用程序权限设计 权限设计文章汇总 asp.net后台管理系统-登陆模块-是否自动登陆 C# 读写文件摘要...
ASP.NET -- WebForm -- Cookie的使用 ASP.NET -- WebForm -- Cookie的使用 Cookie是存在浏览器内存或磁盘上. 1. Test3.aspx文件 ...
- python2读文件,python之文件的读写(2)
小R昨天因为在研究weblogic的漏洞就没来得及学习python(好吧,这都是借口,懒了,大家可不能像我这样.要坚持每天都学). 这个进度是有点慢呀.哎呀,没事没事,我还年轻,才20岁. 哈哈 ...
- Python对文件的创建和读写操作
Python对文件的创建和读写操作 Python提供了文件读写的方法,并且提供了内置的CSV模块,可以对文本文件和二进制文件方便的进行读写操作.除此之外,Python还提供了os模块和shutil模块 ...
- python判断文件或文件夹是否存在、创建文件夹
python判断文件或文件夹是否存在.创建文件夹 1.判断文件或文件夹是否存在 import os #返回值是个布尔类型的 os.path.exists("G:/软件/文件测试/test.p ...
- python删除文件某行_python 文件操作删除某行的实例
python 文件操作删除某行的实例 使用continue跳过本次写循环就可以了 #文本内容 Yesterday when I was young 昨日当我年少轻狂 The tasting of li ...
- Python错误总结:Python读取文件报错
在使用Python读取文件时报错:OSError: [Errno 22] Invalid argument: '\u202aC:\Users\XCB666\Desktop\副本.xlsx' 具体代码如 ...
- 【转】python改文件夹名称大全_python文件和目录操作方法大全(含更改文件夹下所有文件名称的实例)
原文: python改文件夹名称大全_python文件和目录操作方法大全(含更改文件夹下所有文件名称的实例)..._心失荒野的博客-CSDN博客 一. ...
最新文章
- python与mongo_MongoDB与Python的交互
- ubuntu 14.04安装mysql server mysql client
- 面试后总是没有结果的7大原因
- 从运维域看 Serverless 真的就是万能银弹吗?
- 如何增加儿童产品中的趣味性?
- Android 顶部滑动切换实现(一)
- nginx mysql双机热备_MYSQL双机热备
- C语言去除字符串空格
- maven spring 使用memcached方法
- 大数据时代,海量数据处理常用思路和方法总结
- Kaggle | IEEE Fraud Detection(EDA)
- Python统计学11——分位数回归
- Pandas实战-Series的方法
- 【训练题36:数学】斐波那契各项幂次前缀和 | ZOJ 3774
- 一个女留学生在美国的七年
- boost log使用
- 两层板如何做阻抗控制呢
- MBA-day17 假言推理:如果的考法与题型
- 怎么在电脑中更新statsmodels.stats. diagnostic
- 华为ensp NAT技术地址转换