您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

查看两个文件在python中是否具有相同的内容

查看两个文件在python中是否具有相同的内容

是的,我认为如果必须比较多个文件并存储哈希以供以后比较,则对文件进行哈希处理将是最好的方法。由于哈希可能会发生冲突,因此可能会根据用例进行逐字节比较。

通常,逐字节比较将是足够且高效的,哪个filecmp模块也已经执行了其他操作。

参见http://docs.python.org/library/filecmp.html 例如

>>> import filecmp
>>> filecmp.cmp('file1.txt', 'file1.txt')
True
>>> filecmp.cmp('file1.txt', 'file2.txt')
False

通常,如果只需要比较两个文件,则对它们进行散列并进行比较会比较慢,而不是简单的逐字节比较(如果有效率的话)。例如,下面的代码尝试对哈希与字节逐时进行计时

免责声明:这不是计时或比较两种算法的最佳方法。需要改进,但确实给出了粗略的想法。如果您认为应该改进它,请告诉我,我将对其进行更改。

import random
import string
import hashlib
import time

def getRandText(N):
    return  "".join([random.choice(string.printable) for i in xrange(N)])

N=1000000
randText1 = getRandText(N)
randText2 = getRandText(N)

def cmpHash(text1, text2):
    hash1 = hashlib.md5()
    hash1.update(text1)
    hash1 = hash1.hexdigest()

    hash2 = hashlib.md5()
    hash2.update(text2)
    hash2 = hash2.hexdigest()

    return  hash1 == hash2

def cmpByteByByte(text1, text2):
    return text1 == text2

for cmpFunc in (cmpHash, cmpByteByByte):
    st = time.time()
    for i in range(10):
        cmpFunc(randText1, randText2)
    print cmpFunc.func_name,time.time()-st

输出

cmpHash 0.234999895096
cmpByteByByte 0.0
python 2022/1/1 18:35:30 有222人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶