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的chardet库获得文件编码并修改编码
Jan 22 Python
python使用正则表达式检测密码强度源码分享
Jun 11 Python
简单的Python2.7编程初学经验总结
Apr 01 Python
python射线法判断一个点在图形区域内外
Jun 28 Python
Python基础之函数基本用法与进阶详解
Jan 02 Python
tensorflow 重置/清除计算图的实现
Jan 19 Python
pycharm工具连接mysql数据库失败问题
Apr 01 Python
Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
Apr 16 Python
Django实现图片上传功能步骤解析
Apr 22 Python
Pandas将列表(List)转换为数据框(Dataframe)
Apr 24 Python
Python Scrapy多页数据爬取实现过程解析
Jun 12 Python
通过python-pptx模块操作ppt文件的方法
Dec 26 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基础知识:函数基础知识
2006/12/13 PHP
Ajax PHP简单入门教程代码
2008/04/25 PHP
php实现无限级分类实现代码(递归方法)
2011/01/01 PHP
php不写闭合标签的好处
2014/03/04 PHP
php中Redis的应用--消息传递
2017/03/28 PHP
基于jQuery的倒计时插件代码
2011/05/07 Javascript
jQuery 选择器详解
2015/01/19 Javascript
Grunt入门教程(自动任务运行器)
2015/08/06 Javascript
解决JS组件bootstrap table分页实现过程中遇到的问题
2016/04/21 Javascript
AngularJS中$watch和$timeout的使用示例
2016/09/20 Javascript
教大家轻松制作Bootstrap漂亮表格(table)
2016/12/13 Javascript
jQuery加载及解析XML文件的方法实例分析
2017/01/22 Javascript
详谈表单格式化插件jquery.serializeJSON
2017/06/23 jQuery
详解js静态资源文件请求的处理
2017/08/01 Javascript
JS表单传值和URL编码转换
2018/03/03 Javascript
JS中的事件委托实例浅析
2018/03/22 Javascript
详解Vue.js中.native修饰符
2018/04/24 Javascript
ES6模板字符串和标签模板的应用实例分析
2019/06/25 Javascript
微信小程序使用车牌号输入法的示例代码
2019/08/20 Javascript
小程序如何支持使用 async/await详解
2019/09/12 Javascript
js实现表格单列按字母排序
2020/08/12 Javascript
在vue中使用jsonp进行跨域请求接口操作
2020/10/29 Javascript
使用python开发vim插件及心得分享
2014/11/04 Python
Python 读写文件和file对象的方法(推荐)
2016/09/12 Python
matplotlib中legend位置调整解析
2017/12/19 Python
Django 导出项目依赖库到 requirements.txt过程解析
2019/08/23 Python
python 字符串常用方法汇总详解
2019/09/16 Python
python烟花效果的代码实例
2020/02/25 Python
使用python检查yaml配置文件是否符合要求
2020/04/09 Python
Python从MySQL数据库中面抽取试题,生成试卷
2021/01/14 Python
Html+Css+Jquery实现左侧滑动拉伸导航菜单栏的示例代码
2020/03/17 HTML / CSS
个人实用简单的自我评价
2013/10/19 职场文书
售后服务经理岗位职责
2014/02/25 职场文书
工程质量承诺书
2014/03/27 职场文书
校庆筹备方案
2014/03/30 职场文书
销售经理工作失职检讨书
2014/10/24 职场文书