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赋值语句后逗号的作用分析
Jun 08 Python
Python的消息队列包SnakeMQ使用初探
Jun 29 Python
最近Python有点火? 给你7个学习它的理由!
Jun 26 Python
python 解决动态的定义变量名,并给其赋值的方法(大数据处理)
Nov 10 Python
Python代码太长换行的实现
Jul 05 Python
通过Python编写一个简单登录功能过程解析
Sep 04 Python
python框架django项目部署相关知识详解
Nov 04 Python
将pymysql获取到的数据类型是tuple转化为pandas方式
May 15 Python
python如何求圆的面积
Jul 01 Python
Django返回HTML文件的实现方法
Sep 17 Python
Python OpenCV快速入门教程
Apr 17 Python
python 镜像环境搭建总结
Sep 23 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对象类型判断
2008/08/27 PHP
解决PHP在DOS命令行下却无法链接MySQL的技术笔记
2010/12/29 PHP
PHP文件上传处理案例分析
2016/10/15 PHP
javascript 的Document属性和方法集合
2010/01/25 Javascript
JavaScript 放大镜 移动镜片效果代码
2011/05/09 Javascript
了解一点js的Eval函数
2012/07/26 Javascript
js/jQuery简单实现选项卡功能
2014/01/02 Javascript
node.js中的定时器nextTick()和setImmediate()区别分析
2014/11/26 Javascript
js实现完全自定义可带多级目录的网页鼠标右键菜单方法
2015/02/28 Javascript
js实现点击文本框显示日期选择器特效代码分享
2020/05/21 Javascript
JavaScript实现为input与textarea自定义hover,focus效果的方法
2015/08/21 Javascript
js判断登陆用户名及密码是否为空的简单实例
2016/05/16 Javascript
JS自定义混合Mixin函数示例
2016/11/26 Javascript
基于slideout.js实现移动端侧边栏滑动特效
2016/11/28 Javascript
jQuery Validate表单验证插件的基本使用方法及功能拓展
2017/01/04 Javascript
Node.JS中事件轮询(Event Loop)的解析
2017/02/25 Javascript
vue.js指令v-model使用方法
2017/03/20 Javascript
Express框架之connect-flash详解
2017/05/31 Javascript
angularjs自定义过滤器demo示例
2019/08/24 Javascript
使用layui+ajax实现简单的菜单权限管理及排序的方法
2019/09/10 Javascript
angular8和ngrx8结合使用的步骤介绍
2019/12/01 Javascript
JS前端模块化原理与实现方法详解
2020/03/17 Javascript
CentOS6.5设置Django开发环境
2016/10/13 Python
Python实现的简单线性回归算法实例分析
2018/12/26 Python
python requests更换代理适用于IP频率限制的方法
2019/08/21 Python
Python统计分析模块statistics用法示例
2019/09/06 Python
Python利用逻辑回归分类实现模板
2020/02/15 Python
简单的Python人脸识别系统
2020/07/14 Python
荷兰时尚精品店:Labels Fashion
2020/03/22 全球购物
经理职责范文
2013/11/08 职场文书
中文师范生自荐信
2014/01/30 职场文书
基层党组织建设整改方案
2014/09/16 职场文书
个人收入证明模板
2014/09/18 职场文书
Angular性能优化之第三方组件和懒加载技术
2021/05/10 Javascript
Java中使用Filter过滤器的方法
2021/06/28 Java/Android
win10此电脑打不开怎么办 win10双击此电脑无响应的解决办法
2022/07/23 数码科技