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写的一个简单DNS服务器实例
Jun 04 Python
python通过BF算法实现关键词匹配的方法
Mar 13 Python
python图像处理之镜像实现方法
May 30 Python
python模拟登录并且保持cookie的方法详解
Apr 04 Python
python sklearn库实现简单逻辑回归的实例代码
Jul 01 Python
Python操作注册表详细步骤介绍
Feb 05 Python
python 工具 字符串转numpy浮点数组的实现
Mar 14 Python
plt.figure()参数使用详解及运行演示
Jan 08 Python
用基于python的appium爬取b站直播消费记录
Apr 17 Python
如何使用flask将模型部署为服务
May 13 Python
python spilt()分隔字符串的实现示例
May 21 Python
Pytest中skip和skipif的具体使用方法
Jun 30 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
在Windows系统上安装PHP运行环境文字教程
2010/07/19 PHP
PHP代码保护--Zend Guard的使用详解
2013/06/03 PHP
php的ajax简单实例
2014/02/27 PHP
php打印输出棋盘的实现方法
2014/12/23 PHP
PHP设计模式之原型设计模式原理与用法分析
2018/04/25 PHP
会自动逐行上升的文本框
2006/06/30 Javascript
JavaScript中this关键字使用方法详解
2007/03/08 Javascript
Prototype Date对象 学习
2009/07/12 Javascript
扩展javascript的Date方法实现代码(prototype)
2010/11/20 Javascript
推荐40个简单的 jQuery 导航插件和教程(下篇)
2012/09/14 Javascript
用原生js做个简单的滑动效果的回到顶部
2014/10/15 Javascript
JQuery实现图片轮播效果
2015/09/15 Javascript
详解Bootstrap各式各样的按钮(推荐)
2016/12/13 Javascript
bootstrap常用组件之头部导航实现代码
2017/04/20 Javascript
JavaScript实现一个空中避难的小游戏
2017/06/06 Javascript
浅谈vue引用静态资源需要注意的事项
2018/09/28 Javascript
vue  自定义组件实现通讯录功能
2018/09/30 Javascript
简单了解node npm cnpm的具体使用方法
2019/02/27 Javascript
使用JS来动态操作css的几种方法
2019/12/18 Javascript
node.js中fs文件系统模块的使用方法实例详解
2020/02/13 Javascript
python中的sort方法使用详解
2014/07/25 Python
python进阶教程之词典、字典、dict
2014/08/29 Python
Python函数中定义参数的四种方式
2014/11/30 Python
python简单判断序列是否为空的方法
2015/06/30 Python
Python通过命令开启http.server服务器的方法
2017/11/04 Python
pygame游戏之旅 如何制作游戏障碍
2018/11/20 Python
使用50行Python代码从零开始实现一个AI平衡小游戏
2018/11/21 Python
利用Pandas和Numpy按时间戳将数据以Groupby方式分组
2019/07/22 Python
python单例设计模式实现解析
2020/01/07 Python
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
Django中从mysql数据库中获取数据传到echarts方式
2020/04/07 Python
html5 canvas实现给图片添加平铺水印
2019/08/20 HTML / CSS
什么是托管函数?托管函数有什么用?
2014/06/15 面试题
收银员的岗位职责范本
2014/02/04 职场文书
2015年税务稽查工作总结
2015/05/26 职场文书
《包身工》教学反思
2016/02/23 职场文书