参考链接: Python hash()

现在有3000条数据,需要插入到数据库中去,使用的是对链接进行MD5加密,

hashcode = md5(str(item_url)) 然后在数据库中设置 hashcode 为UNIQUE索引

3000条数据全部插入完毕,耗时是32s

不使用MD5加密,耗时30秒。(https://www.cnblogs.com/xuchunlin/p/8616604.html)

结论:MD5加密去重对时间影响不大

https://blog.csdn.net/Mao_code/article/details/53976511

https://blog.csdn.net/sangky/article/details/80931040

https://www.aliyun.com/jiaocheng/445004.html

https://www.cnblogs.com/renyuanjun/p/5562084.html

https://blog.csdn.net/katrina1rani/article/details/80907910

https://blog.csdn.net/yangczcsdn/article/details/81327091

https://blog.csdn.net/idkevin/article/details/47444237(Python中巧用set做去重)

http://outofmemory.cn/code-snippet/1191/Python-usage-hashlib-module-do-string-jiami

python中的hashlib和base64加密模块使用实例(https://www.jb51.net/article/54631.htm)

python学习之11 加密解密hashlib hashlib是python专门用来加密解密的库,有md5, sha1, sha224, sha256, sha384, sha512。  Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。  什么是摘要算法呢?摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。

(https://blog.csdn.net/lyffly2011/article/details/50733830)

函数 用于计算用户名和密码相加得到的加密值。

def calc_md5(username, password):     md5 = hashlib.md5()     str_dd = username + password     md5.update(str_dd.encode('utf-8'))     return md5.hexdigest() 测试源码 import hashlib

test_string = '123456'

md5 = hashlib.md5() md5.update(test_string.encode('utf-8')) md5_encode = md5.hexdigest() print(md5_encode)

sha1 = hashlib.sha1() sha1.update(test_string.encode('utf-8')) sha1_encode = sha1.hexdigest() print(sha1_encode) 输出结果为 e10adc3949ba59abbe56e057f20f883e  7c4a8d09ca3762af61e59520943dc26494f8941b

过程是先把文件根据hash算法转为一个唯一的hash值再进行比较,可适用于图片,txt文件等比较

import hashlib

password = 'password'

#以md5方式加密

hash = hashlib.md5(b'j#$%^&;FD')

# hash = hashlib.md5('password')

hash.update(password.encode('utf-8'))

haword = hash.hexdigest()

print(haword)

import sys

import hashlib

def md5sum(filename):

file_object = open(filename, 'rb')

file_content = file_object.read()

file_object.close()

file_md5 = hashlib.md5(file_content)

return file_md5

if __name__ == "__main__":

hash_text = md5sum('tt.txt')

print(hash_text.hexdigest())

print(len(hash_text.hexdigest()))

注意,需要以二进制的方式读入文件,若写成hashlib.md5(filename),则会变成对字符串filename计算md5

另外对较大文件进行校验,一次性读入太大内容,导致性能低下,故一般读取部分进行处理。

# 大文件的MD5值 def getFileMd5(self, filename):

if not os.path.isfile(filename):

return myhash = hashlib.md5()

f = file(filename, 'rb')

while True:

b = f.read(8096)

if not b:

break

myhash.update(b)

f.close()

return myhash.hexdigest()

[转载] Python中 hash去重相关推荐

  1. [转载] python中set函数是什么数据类型_Python基本数据类型-list-tuple-dict-set详解

    参考链接: Python中的isdisjoint函数 Python基本数据类型-list-tuple-dict-set 数据类型 表示方法 特性 list 列表用方括号表示:[] list是一种有序的 ...

  2. [转载] python中for语句用法_详解Python中for循环的使用_python

    参考链接: 在Python中将else条件语句与for循环一起使用 这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 &q ...

  3. [转载] python中的for循环对象和循环退出

    参考链接: Python中循环 流程控制-if条件 判断条件,1位true,0是flesh,成立时true,不成立flesh,not取反 if  1; print 'hello python' pri ...

  4. [转载] Python中的memoryview

    参考链接: Python memoryview() Python中的memoryview提供了类似C语言指针的功能,有了memoryview,如果某个Object支持buffer protocol,那 ...

  5. [转载] python中string函数的用法_python中string模块各属性以及函数的用法

    参考链接: Python中的string.octdigits 任何语言都离不开字符,那就会涉及对字符的操作,尤其是脚本语言更是频繁,不管是生产环境还是面试考验都要面对字符串的操作. python的字符 ...

  6. [转载] python中set使用介绍

    参考链接: Python中set的union python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersec ...

  7. [转载] Python中关于字符串的使用演示

    参考链接: Python字符串| zfill 注意,python中对于函数的调用基本都是通过.的形式调用的,字符串中除了len()函数,基本都是通过.调用的. 1.字符串变量子串的截取 Python不 ...

  8. [转载] Python中NumPy简介及使用举例

    参考链接: Python中的numpy.invert NumPy是Python语言的一个扩展包.支持多维数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.NumPy提供了与Matlab相似的功能 ...

  9. [转载] python中numpy.concatenate()函数的使用

    参考链接: Python中的numpy.append numpy库数组拼接np.concatenate 原文:https://blog.csdn.net/zyl1042635242/article/d ...

最新文章

  1. php字符串常用算法--字符串加密解密
  2. 2020年一季度中小微企业收入平均下降69.5%
  3. 洛谷3224 【HAOI2012】永无乡(线段树合并)
  4. idea安装lua插件_KONG网关 — 插件开发
  5. php 简析对象,PHP白盒审计工具RIPS源码简析
  6. [ZZ]MVC设计模式
  7. python中队列的应用用场景_消息队列应用场景
  8. DPDK无锁队列rte_ring相关代码及示例程序(rte_ring.h,rte_ring.c,main.c,makefile)
  9. EasyUI remote ajax方式提交验证
  10. KMP算法(C++版)
  11. echarts 获取点击的y轴数值_ECharts关系图
  12. TCP数据报结构以及三次握手(图解)
  13. 社工库mysql_社工库源码大全(转载)
  14. 全国火车高铁站及车次数据爬虫(内含100W+数据,免费领取!)
  15. 金蝶云苍穹笔记(一)
  16. 如何在自己电脑上设php网站,怎么在自己电脑上建网站
  17. Q3营收利润双降,新作将成Take-Two逆势大爆发的动力?
  18. 手机号格式校验和手机号添加空格
  19. Redis_17_Redis服务器中的数据库(五种基本类型底层存放)
  20. android 仿小米相机,android-自定义相机遇小米3生成图片花屏

热门文章

  1. jsp文件过大,is exceeding 65535 bytes limit
  2. c语言中调用平均成绩,C语言、用调用函数、输入3个学生5门课程的成绩分别用函数求每个学生平均分每门课的平均分...
  3. js的tree数组对象扁平化思否_js 中的tree型数组如何去重与合并?
  4. java中斗地主发牌程序代码_java模拟实现斗地主发牌小程序
  5. JavaScript文档DOM对象处理HTML→document属性方法、write、getElementBy**、getsetAttribute、节点操作方法、innerHTML、操作CSS样式属性
  6. 排序算法部分知识点小结
  7. 计算机组成原理—指令格式
  8. 假设系统中共有5个{P0,P1,P2,P3,P4}和A,B,C三类资源;A类资源共有10个,B类资源共有5个,C类资源共有7个。在时刻T0,系统资源分配情况如下表8-14所示。
  9. 硬币支付问题(贪心策略)
  10. 2019蓝桥杯C++B:等差数列(详解)