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自动安装pip
Apr 24 Python
Python遍历某目录下的所有文件夹与文件路径
Mar 15 Python
Python对象中__del__方法起作用的条件详解
Nov 01 Python
python三大神器之fabric使用教程
Jun 10 Python
python3实现带多张图片、附件的邮件发送
Aug 10 Python
python多线程扫描端口(线程池)
Sep 04 Python
python实现超市管理系统(后台管理)
Oct 25 Python
Tensorflow Summary用法学习笔记
Jan 10 Python
解决python -m pip install --upgrade pip 升级不成功问题
Mar 05 Python
python实现简单的井字棋游戏(gui界面)
Jan 22 Python
python利用xpath爬取网上数据并存储到django模型中
Feb 26 Python
详解Go语言运用广度优先搜索走迷宫
Jun 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 resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法
2016/03/23 PHP
PHP简单获取多个checkbox值的方法
2016/06/13 PHP
php正确输出json数据的实例讲解
2018/08/21 PHP
基于jquery的用鼠标画出可移动的div
2012/09/06 Javascript
javascript 日期时间 转换的方法
2013/02/21 Javascript
jquery导航制件jquery鼠标经过变色效果示例
2013/12/05 Javascript
jquery中load方法的用法及注意事项说明
2014/02/22 Javascript
jQuery实现右侧显示可向左滑动展示的深色QQ客服效果代码
2015/10/23 Javascript
javascript中setAttribute兼容性用法分析
2016/12/12 Javascript
Javascript Function.prototype.bind详细分析
2016/12/29 Javascript
javascript作用域链与执行环境详解
2017/03/25 Javascript
CSS3+JavaScript实现翻页幻灯片效果
2017/06/28 Javascript
微信小程序实现签到功能
2018/10/31 Javascript
JavaScript实现获取两个排序数组的中位数算法示例
2019/02/26 Javascript
Vue 中文本内容超出规定行数后展开收起的处理的实现方法
2019/04/28 Javascript
解决微信小程序中的滚动穿透问题
2019/09/16 Javascript
vue实现倒计时获取验证码效果
2020/04/17 Javascript
vue el-table实现行内编辑功能
2019/12/11 Javascript
微信小程序自定义纯净模态框(弹出框)的实例代码
2020/03/09 Javascript
Vue3为什么这么快
2020/09/23 Javascript
Python中实现远程调用(RPC、RMI)简单例子
2014/04/28 Python
浅谈Python peewee 使用经验
2017/10/20 Python
Python+OpenCV让电脑帮你玩微信跳一跳
2018/01/04 Python
Scrapy使用的基本流程与实例讲解
2018/10/21 Python
pandas数据处理进阶详解
2019/10/11 Python
pytorch实现Tensor变量之间的转换
2020/02/17 Python
python使用信号量动态更新配置文件的操作
2020/04/01 Python
推荐技术人员一款Python开源库(造数据神器)
2020/07/08 Python
美国知名的摄影器材销售网站:Adorama
2017/02/01 全球购物
网络书店创业计划书
2014/02/07 职场文书
学习朴航瑛老师爱岗敬业先进事迹思想汇报
2014/09/17 职场文书
2014年社区矫正工作总结
2014/11/18 职场文书
巾帼标兵事迹材料
2014/12/26 职场文书
学校运动会加油词
2015/07/18 职场文书
企业愿景口号
2015/12/25 职场文书
left join、inner join、right join的区别
2021/04/05 MySQL