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实现根据指定端口探测服务器/模块部署的方法
Aug 25 Python
Python中实现常量(Const)功能
Jan 28 Python
Python计算已经过去多少个周末的方法
Jul 25 Python
python常用函数详解
Sep 13 Python
python excel使用xlutils类库实现追加写功能的方法
May 02 Python
python之文件读取一行一行的方法
Jul 12 Python
浅谈python3发送post请求参数为空的情况
Dec 28 Python
使用python分析统计自己微信朋友的信息
Jul 19 Python
pytorch中的embedding词向量的使用方法
Aug 18 Python
python+opencv3生成一个自定义纯色图教程
Feb 19 Python
利用python下载scihub成文献为PDF操作
Jul 09 Python
用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案
Mar 03 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
关于页面优化和伪静态
2009/10/11 PHP
解析php常用image图像函数集
2013/06/24 PHP
php加速器eAccelerator的配置参数、API详解
2014/05/05 PHP
php实现zip压缩文件解压缩代码分享(简单易懂)
2014/05/10 PHP
PHP生成json和xml类型接口数据格式
2015/05/17 PHP
php比较两个字符串长度的方法
2015/07/13 PHP
PHP基于curl模拟post提交json数据示例
2018/06/22 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
javascript获取下拉列表框当中的文本值示例代码
2013/07/31 Javascript
jquery常用操作小结
2014/07/21 Javascript
原生javascript实现Tab选项卡切换功能
2015/01/12 Javascript
JavaScript通过select动态更换图片的方法
2015/03/23 Javascript
jquery ui resize 中border-box的bug修正
2015/04/26 Javascript
jQuery实现购物车表单自动结算效果实例
2015/08/10 Javascript
JavaScript构建自己的对象示例
2016/11/29 Javascript
bootstrap多种样式进度条展示
2016/12/20 Javascript
Ajax 加载数据 练习代码
2017/01/05 Javascript
bootstrap 模态框(modal)实现水平垂直居中显示
2017/01/23 Javascript
vue.js 实现点击按钮动态添加li的方法
2018/09/07 Javascript
微信小程序时间控件picker view使用详解
2018/12/28 Javascript
react 中父组件与子组件双向绑定问题
2019/05/20 Javascript
vue-cli 3 全局过滤器的实例代码详解
2019/06/03 Javascript
微信小程序之滑动页面隐藏和显示组件功能的实现代码
2020/06/19 Javascript
Python中urllib+urllib2+cookielib模块编写爬虫实战
2016/01/20 Python
Python统计单词出现的次数
2018/04/04 Python
Python学习笔记之抓取某只基金历史净值数据实战案例
2019/06/03 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
2019/06/08 Python
基于Python实现人脸自动戴口罩系统
2020/02/06 Python
ITK 实现多张图像转成单个nii.gz或mha文件案例
2020/07/01 Python
Python制作运行进度条的实现效果(代码运行不无聊)
2021/02/24 Python
物流管理专业毕业生自荐信
2014/03/04 职场文书
大学竞选班干部演讲稿
2014/08/21 职场文书
2014年保洁工作总结
2014/11/24 职场文书
新员工辞职信范文
2015/05/12 职场文书
小学五年级班主任工作经验交流材料
2015/11/02 职场文书
教你用Java Swing实现自助取款机系统
2021/06/11 Java/Android