栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python文件属性、文件摘要

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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: 
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: 
sha: 
type hexdigest: 
sha: 32d10c7b8cf96570ca04ce37f2a19d84240d3a89
type digest: 
sha: b'2xd1x0c{x8cxf9epxcax04xce7xf2xa1x9dx84$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'2xd1x0c{x8cxf9epxcax04xce7xf2xa1x9dx84$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"5x13|wx16xfdx87x90xbexc0x1b'xa3xeaexb0xc7x95xd5 "

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"5x13|wx16xfdx87x90xbexc0x1b'xa3xeaexb0xc7x95xd5 "
sha256: 5eaf9ffa04324260feba2be8ed4e538df07da07c4bf20faee656208829293c82
sha256: b'^xafx9fxfax042B`xfexba+xe8xedNSx8dxf0}xa0|Kxf2x0fxaexe6V x88)) 

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)

运行结果:


crc32: 3657216124
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/934974.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号