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接收多播数据的代码
Mar 01 Python
Python基于DES算法加密解密实例
Jun 03 Python
python实现数值积分的Simpson方法实例分析
Jun 05 Python
基于Python和Scikit-Learn的机器学习探索
Oct 16 Python
python利用有道翻译实现"语言翻译器"的功能实例
Nov 14 Python
对numpy的array和python中自带的list之间相互转化详解
Apr 13 Python
Python使用re模块实现信息筛选的方法
Apr 29 Python
python实现简单tftp(基于udp协议)
Jul 30 Python
python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式
May 16 Python
Python可以实现栈的结构吗
May 27 Python
python如何查看安装了的模块
Jun 23 Python
解决import tensorflow导致jupyter内核死亡的问题
Feb 06 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.MVC的模板标签系统(三)
2006/09/05 PHP
php google或baidu分页代码
2009/11/26 PHP
Php Ctemplate引擎开发相关内容
2012/03/03 PHP
php构造方法中析构方法在继承中的表现
2016/04/12 PHP
window.open()弹出居中的窗口
2007/02/01 Javascript
JQuery 获取和设置Select选项的代码
2010/02/07 Javascript
使用apply方法处理数组的三个技巧[译]
2012/09/20 Javascript
javascript中[]和{}对象使用介绍
2013/03/20 Javascript
JS创建类和对象的两种不同方式
2014/08/08 Javascript
利用jquery实现实时更新歌词的方法
2017/01/06 Javascript
NodeJs的fs读写删除移动监听
2017/04/28 NodeJs
jQuery+HTML5实现WebGL高性能烟花绽放动画效果【附demo源码下载】
2017/08/18 jQuery
AjaxUpLoad.js实现文件上传功能
2018/03/02 Javascript
解决layui中table异步数据请求不支持自定义返回数据格式的问题
2018/08/19 Javascript
JS apply用法总结和使用场景实例分析
2020/03/14 Javascript
RxJS在TypeScript中的简单使用详解
2020/04/13 Javascript
NodeJS配置CORS实现过程详解
2020/12/02 NodeJs
[01:07:11]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python实现查找excel里某一列重复数据并且剔除后打印的方法
2015/05/26 Python
Python制作简易注册登录系统
2016/12/15 Python
使用python生成目录树
2018/03/29 Python
python cumsum函数的具体使用
2019/07/29 Python
Django 实现图片上传和下载功能
2020/12/31 Python
HTML5 画布canvas使用方法
2016/03/18 HTML / CSS
英国在线玫瑰专家:InterRose
2019/12/01 全球购物
美国家居装饰店:Z Gallerie
2020/12/28 全球购物
经典c++面试题六
2012/01/18 面试题
不用游标的SQL语句有哪些
2012/09/07 面试题
新领导上任欢迎词
2014/01/13 职场文书
三八红旗集体先进事迹材料
2014/05/22 职场文书
医学检验专业自荐信
2014/09/18 职场文书
党员批评与自我批评范文
2014/09/23 职场文书
祖国在我心中演讲稿(小学生)
2014/09/23 职场文书
单位租房协议范本
2014/12/03 职场文书
我的法兰西岁月观后感
2015/06/09 职场文书
Redis主从配置和底层实现原理解析(实战记录)
2021/06/30 Redis