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 相关文章推荐
pytyon 带有重复的全排列
Aug 13 Python
Python实现的几个常用排序算法实例
Jun 16 Python
在Python的Tornado框架中实现简单的在线代理的教程
May 02 Python
栈和队列数据结构的基本概念及其相关的Python实现
Aug 24 Python
Flask框架Jinjia模板常用语法总结
Jul 19 Python
24式加速你的Python(小结)
Jun 13 Python
python 变量初始化空列表的例子
Nov 28 Python
Python一行代码解决矩阵旋转的问题
Nov 30 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
Aug 07 Python
Python自动化之UnitTest框架实战记录
Sep 08 Python
python 用Matplotlib作图中有多个Y轴
Nov 28 Python
Python实现图片指定位置加图片水印(附Pyinstaller打包exe)
Mar 04 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 向右侧拉菜单实现代码,测试使用中
2009/11/03 PHP
php中批量修改文件后缀名的函数代码
2011/10/23 PHP
PHP中的多行字符串传递给JavaScript的两种方法
2014/06/19 PHP
ThinkPHP在Cli模式下使用模板引擎的方法
2015/09/25 PHP
Javascript 生成指定范围数值随机数
2009/01/09 Javascript
JQuery中$.ajax()方法参数详解及应用
2013/12/12 Javascript
jQuery中removeClass()方法用法实例
2015/01/05 Javascript
Angularjs实现多个页面共享数据的方式
2016/03/29 Javascript
微信小程序  modal弹框组件详解
2016/10/27 Javascript
用Nodejs搭建服务器访问html、css、JS等静态资源文件
2017/04/28 NodeJs
基于ES6 Array.of的用法(实例讲解)
2017/09/05 Javascript
Vue中多个元素、组件的过渡及列表过渡的方法示例
2019/02/13 Javascript
js module大战
2019/04/19 Javascript
仿ElementUI实现一个Form表单的实现代码
2019/04/23 Javascript
vue-video-player 解决微信自动全屏播放问题(横竖屏导致样式错乱问题)
2020/02/25 Javascript
Node.js API详解之 module模块用法实例分析
2020/05/13 Javascript
vscode 使用Prettier插件格式化配置使用代码详解
2020/08/10 Javascript
浅谈python标准库--functools.partial
2019/03/13 Python
Python将列表数据写入文件(txt, csv,excel)
2019/04/03 Python
Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】
2019/06/18 Python
python查找重复图片并删除(图片去重)
2019/07/16 Python
Django后端发送小程序微信模板消息示例(服务通知)
2019/12/17 Python
keras 读取多标签图像数据方式
2020/06/12 Python
学习Python爬虫的几点建议
2020/08/05 Python
pycharm 实现调试窗口恢复
2021/02/05 Python
新秀丽拉杆箱美国官方网站:Samsonite美国
2016/07/25 全球购物
西班牙香水和化妆品网上商店:Douglas
2017/10/29 全球购物
华为慧通笔试题
2016/04/22 面试题
学校督导评估方案
2014/06/10 职场文书
师范大学生求职信
2014/06/13 职场文书
数学教育专业求职信
2014/07/22 职场文书
2015年煤矿工作总结
2015/04/28 职场文书
python爬虫之爬取笔趣阁小说
2021/04/22 Python
golang中字符串MD5生成方式总结
2021/07/04 Golang
html+css实现滚动到元素位置显示加载动画效果
2021/08/02 HTML / CSS
腾讯云服务器部署前后分离项目之前端部署
2022/06/28 Servers