python 不知道是啥

1.判断两个大文件是否是同一个文件

import os
import hashlib
import time
start = time.time()
path1 = r"E:\视频资料\elk\1.zip"
path2 = r"E:\视频资料\elk\2.zip"
def file_hash(path):
    file_size = os.path.getsize(path)
    md5 = hashlib.md5()
    with open(path1,'rb') as info:
        while file_size >=8192:
            content = info.read(8192)
            md5.update(content)
            file_size -=8192
        else:
            content = info.read(file_size)
            if content:
                md5.update(content)
    return md5.hexdigest()
# def file_hash(path):
#     md5 = hashlib.md5()
#     with open(path1, 'rb') as info:
#         md5.update(info.read())
#     return md5.hexdigest()
def file(path1,path2):
    return file_hash(path1) ==file_hash(path2)
ret = file(path1,path2)
print(ret)
end =time.time()
print(end-start)
View Code

通过制定读取大小计算和直接读取计算的hash是一样的,但是使用时间会有所不同,直接将文件全部读入到内容中会占用时间更长,cpu使用率在一定时间内会飙升!

上面代码刚开始不懂得是:按照指定大写获取到的hash和直接读取到的hash的是一样的么?通过验证确定一样的

#以下两种犯法获取到的"helloworld"的hash是一样的
md5 = hashlib.md5()
md5.update(b'hello')
md5.update(b'world')
ret = md5.hexdigest()
print(ret)

md5 = hashlib.md5()
md5.update(b'helloworld')
ret = md5.hexdigest()
print(ret)

2.python处理大文件

def func():
    with open('t','r',encoding='utf-8')as f:
        for i in f:
            i = i.strip('\r\n')
            yield i

g = func()
for i in range(10):
    print(g.__next__())
View Code

猜你喜欢

转载自www.cnblogs.com/p0st/p/10596556.html