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实现的二叉树定义与遍历算法实例
Jun 30 Python
浅析python实现scrapy定时执行爬虫
Mar 04 Python
详谈Python3 操作系统与路径 模块(os / os.path / pathlib)
Apr 26 Python
Python中list查询及所需时间计算操作示例
Jun 21 Python
python实现共轭梯度法
Jul 03 Python
Python编程学习之如何判断3个数的大小
Aug 07 Python
Python for循环搭配else常见问题解决
Feb 11 Python
django的autoreload机制实现
Jun 03 Python
Python SQLAlchemy库的使用方法
Oct 13 Python
python中如何对多变量连续赋值
Jun 03 Python
Windows安装Anaconda3的方法及使用过程详解
Jun 11 Python
python tqdm用法及实例详解
Jun 16 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
PHP6 先修班 JSON实例代码
2008/08/23 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
2011/01/27 PHP
基于php数组中的索引数组和关联数组详解
2018/03/12 PHP
PHP基于PDO扩展操作mysql数据库示例
2018/12/24 PHP
Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
2019/01/17 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
Thinkphp5框架异常处理操作实例分析
2020/06/03 PHP
JS实现浏览器菜单命令
2006/09/05 Javascript
JavaScript中Array 对象相关的几个方法
2006/12/22 Javascript
javascript制作照片墙及制作过程中出现的问题
2016/04/04 Javascript
Javascript操作表单实例讲解(下)
2016/06/20 Javascript
归纳下js面向对象的几种常见写法总结
2016/08/24 Javascript
js控制台输出的方法(详解)
2016/11/26 Javascript
微信小程序 设置启动页面的两种方法
2017/03/09 Javascript
详解nodejs微信jssdk后端接口
2017/05/25 NodeJs
Vue的轮播图组件实现方法
2018/03/03 Javascript
Node.JS在命令行中检查Chrome浏览器是否安装并打开指定网址
2019/05/21 Javascript
如何通过shell脚本自动生成vue文件详解
2019/09/10 Javascript
简单了解vue中的v-if和v-show的区别
2019/10/08 Javascript
JS实现放烟花效果
2020/03/10 Javascript
python如何查看系统网络流量的信息
2016/09/12 Python
python模块smtplib实现纯文本邮件发送功能
2018/05/22 Python
python中的tcp示例详解
2018/12/09 Python
Python 字符串、列表、元组的截取与切片操作示例
2019/09/17 Python
python保留格式汇总各部门excel内容的实现思路
2020/06/01 Python
分享8款纯CSS3实现的搜索框功能
2017/09/14 HTML / CSS
英国护肤品购物网站:Beauty Expert
2016/08/19 全球购物
美国Rue La La闪购网站:奢侈品、中高档品牌限时折扣
2016/10/19 全球购物
高中毕业自我鉴定范文
2013/10/02 职场文书
内衣营销方案
2014/03/15 职场文书
骨干教师培训方案
2014/05/06 职场文书
声乐专业大学生职业生涯规划书:理想的未来需要自己去打造
2014/09/20 职场文书
2014年小学德育工作总结
2014/12/05 职场文书
教师个人发展总结
2015/02/11 职场文书
2015年底工作总结范文
2015/05/15 职场文书
mysql insert 存在即不插入语法说明
2022/03/25 MySQL