Python实现通过文件路径获取文件hash值的方法


Posted in Python onApril 29, 2017

本文实例讲述了Python实现通过文件路径获取文件hash值的方法。分享给大家供大家参考,具体如下:

import hashlib
import os,sys
def CalcSha1(filepath):
  with open(filepath,'rb') as f:
    sha1obj = hashlib.sha1()
    sha1obj.update(f.read())
    hash = sha1obj.hexdigest()
    print(hash)
    return hash
def CalcMD5(filepath):
  with open(filepath,'rb') as f:
    md5obj = hashlib.md5()
    md5obj.update(f.read())
    hash = md5obj.hexdigest()
    print(hash)
    return hash
if __name__ == "__main__":
  if len(sys.argv)==2 :
    hashfile = sys.argv[1]
    if not os.path.exists(hashfile):
      hashfile = os.path.join(os.path.dirname(__file__),hashfile)
      if not os.path.exists(hashfile):
        print("cannot found file")
      else
      CalcMD5(hashfile)
  else:
    CalcMD5(hashfile)
    #raw_input("pause")
else:
  print("no filename")

使用Python进行文件Hash计算有两点必须要注意:

1、文件打开方式一定要是二进制方式,既打开文件时使用b模式,否则Hash计算是基于文本的那将得到错误的文件Hash(网上看到有人说遇到Python的Hash计算错误在大多是由于这个原因造成的)。

2、对于MD5如果需要16位(bytes)的值那么调用对象的digest()hexdigest()默认是32位(bytes),同理Sha1digest()hexdigest()分别产生20位(bytes)和40位(bytes)的hash值

Python 相关文章推荐
python使用pyqt写带界面工具的示例代码
Oct 23 Python
Python搜索引擎实现原理和方法
Nov 27 Python
使用Python实现微信提醒备忘录功能
Dec 04 Python
对Python发送带header的http请求方法详解
Jan 02 Python
Django数据库类库MySQLdb使用详解
Apr 28 Python
Python3中函数参数传递方式实例详解
May 05 Python
Pytorch 抽取vgg各层并进行定制化处理的方法
Aug 20 Python
django 配置阿里云OSS存储media文件的例子
Aug 20 Python
解决jupyter notebook import error但是命令提示符import正常的问题
Apr 15 Python
Python基于Twilio及腾讯云实现国际国内短信接口
Jun 18 Python
Python 多进程原理及实现
Dec 21 Python
pandas DataFrame.shift()函数的具体使用
May 24 Python
python基于pyDes库实现des加密的方法
Apr 29 #Python
Python简单实现Base64编码和解码的方法
Apr 29 #Python
Python变量和字符串详解
Apr 29 #Python
python实现unicode转中文及转换默认编码的方法
Apr 29 #Python
Python 正则表达式实现计算器功能
Apr 29 #Python
python中类变量与成员变量的使用注意点总结
Apr 29 #Python
Python urls.py的三种配置写法实例详解
Apr 28 #Python
You might like
无数据库的详细域名查询程序PHP版(4)
2006/10/09 PHP
php 读取文件头判断文件类型的实现代码
2013/08/05 PHP
PHP递归删除目录几个代码实例
2014/04/21 PHP
PHP YII框架开发小技巧之模型(models)中rules自定义验证规则
2015/11/16 PHP
session 加入redis的实现代码
2016/07/15 PHP
yii2实现Ueditor百度编辑器的示例代码
2018/11/02 PHP
php和nginx交互实例讲解
2019/09/24 PHP
js checkbox(复选框) 使用集锦
2009/04/28 Javascript
javascript 程序库的比较(一)之DOM功能
2010/04/07 Javascript
Jquery 获取checkbox的checked问题
2011/11/16 Javascript
js showModalDialog 弹出对话框的简单实例(子窗体)
2014/01/07 Javascript
jQuery使用drag效果实现自由拖拽div
2015/06/11 Javascript
Angular 应用技巧总结
2016/09/14 Javascript
利用Javascript裁剪图片并存储的简单实现
2017/03/13 Javascript
Vue 利用指令实现禁止反复发送请求的两种方法
2019/09/15 Javascript
jquery 回调操作实例分析【回调成功与回调失败的情况】
2019/09/27 jQuery
vue 解决异步数据更新问题
2019/10/29 Javascript
让IDE识别webpack的别名alias的实现方法
2020/05/06 Javascript
[01:18]PWL开团时刻DAY10——一拳超人
2020/11/11 DOTA
python中assert用法实例分析
2015/04/30 Python
python使用线程封装的一个简单定时器类实例
2015/05/16 Python
详解Python中的type()方法的使用
2015/05/21 Python
python3.6 实现AES加密的示例(pyCryptodome)
2018/01/10 Python
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
2019/08/07 Python
python机器学习包mlxtend的安装和配置详解
2019/08/21 Python
python实现输入的数据在地图上生成热力图效果
2019/12/06 Python
Python脚本实现监听服务器的思路代码详解
2020/05/28 Python
numpy中生成随机数的几种常用函数(小结)
2020/08/18 Python
python中的时区问题
2021/01/14 Python
国际知名军事风格休闲装品牌:Alpha Industries(阿尔法工业)
2017/05/24 全球购物
开办大学饮食联盟创业计划书
2014/01/29 职场文书
电气自动化个人求职信范文
2014/02/03 职场文书
土建施工员岗位职责
2015/04/11 职场文书
2015年助理政工师工作总结
2015/05/26 职场文书
幼儿园托班开学寄语(2016秋季)
2015/12/03 职场文书
CSS实现多个元素在盒子内两端对齐效果
2021/03/30 HTML / CSS