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

2023-12-15

可能的重复:
查找重复文件并删除它们。
在Python中,有没有一种简洁的方法来比较两个文本文件的内容是否相同?

在 Python 中查看两个文件内容是否相同的最简单方法是什么。

我能做的一件事就是对每个文件进行 md5 并进行比较。有没有更好的办法?


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

一般来说,逐字节比较就足够且有效了,这filecmp模块已经做了+其他事情。

See http://docs.python.org/library/filecmp.html e.g.

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

请注意,默认情况下,filecmp不比较文件的内容,为此,添加第三个参数shallow=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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在python中查看两个文件是否具有相同的内容[重复] 的相关文章

随机推荐

  • 为什么我的方法会陷入无限递归?

    我编写了一种方法来帮助构建四叉树 每个四叉树都有一个根节点 一个根节点有4个子节点 我使用深度递归来阻止该函数划分太多次 传入的深度等于正方形边长以 2 为底的对数 始终传入正方形 然而 我从中得到了无限递归 有人明白为什么吗 当我运行它时
  • 根据查询结果设置用户变量

    是否可以根据 MySQL 中的查询结果设置用户变量 我想要实现的是这样的 我们可以假设两者USER and GROUP是独一无二的 set user 123456 set group select GROUP from USER where
  • 如何动态改变背景颜色的资源?

    我有以下控制 我想更改某些事件触发器的背景颜色 我想做这个clrGray资源作为某些事件点击的颜色 我已经尝试过以下方法 但没有成功 XAM
  • 单击项目 RecyclerView 时不显示 toast

    好吧 我知道 可能已经有人问过这个问题了 我已经为我的问题找到了可能的解决方案这个链接 但是 由于未知的原因 该解决方案对我不起作用 我想显示一个Toast当一个项目 aCardView 在 a 内单击RecyclerView This T
  • 如何实现 Functor[数据集]

    我正在努力研究如何创建一个实例Functor Dataset 问题是当你map from A to B the Encoder B 必须在隐式范围内 但我不知道该怎么做 implicit val datasetFunctor Functor
  • 使用 php 从通过 ajax 发送的 dataURI 生成 png 文件

    我有一个 svg 文件 它生成 dataURI png 并且效果很好 我希望将该 dataURI 保存为图像 因此我尝试通过 ajax 将 dataURI 发送到另一个可以执行 PHP 的服务器 但我无法让它发挥作用 这是生成 dataUR
  • Xamarin Form - 如何在 UWP 中存储 PDF 或 JPEG 格式的图像

    大家好 我正在开发 DMS 应用程序 用户可以通过扫描仪扫描文档或图像并上传到服务器 为了扫描目的 我参考了这个link它工作完美 现在的问题是 ImageScanner ScanFilesToFolderAsync ImageScanne
  • 格式化和显示
    时出现问题

    我对编码还很陌生 所以请耐心等待 我已经读到不同的浏览器以不同的方式显示水平规则 我似乎无法在 Firefox 或 Chrome 中得到正确的结果 到目前为止我只检查过两个 这是我的 hr 在 Firefox 中的样子 http posti
  • CSS 获取没有类的最后一个孩子

    这对你们来说是一个棘手的挑战 CSS 选择器要获取 last child那个没有类 到目前为止我已经尝试过 nav item not nav item mobile last child nav item last child not na
  • 当前 = 当前 * 10 + (c - '0');

    我试图通过这段代码读取未知数量的整数 while 1 int c getchar if c EOF break else if isdigit c current current 10 c 0 else total current curr
  • 压缩而不创建父文件夹

    我有一个这样的文件夹结构 project folder 01 file1 cpp file2 cpp folder 02 file1 cpp file2 cpp 我想以我得到的方式 当我解压时 压缩项目文件夹的内容 folder 01 fi
  • Java 中的 switch case 逻辑表达式语句 - 与 JS 或 PHP

    在 JavaScript 中 我也在 PHP 中看到过 您可以在案例中使用逻辑表达式 例如 switch true case d lt 10 document write Less than 10 break case d 10 docum
  • C# 模块预计包含程序集清单

    大家好 我是 C 世界的新手 我必须使用它 因为依赖于来自多播源的 xceedzip dll 压缩数据 在编写了一些用于接收提要的代码后 我在调用此 dll 时遇到了障碍 据我了解 我需要使用 System Reflection 并调用 d
  • 使用 Gradle 中的构建类型在一台设备上运行使用 ContentProvider 的同一应用程序

    我已经设置 Gradle 将包名称后缀添加到我的调试应用程序中 这样我就可以在一部手机上拥有我正在使用的发布版本和调试版本 我引用的是这个 http tools android com tech docs new build system
  • 读取压缩在一个文件中的多个 csv 文件

    我在文件夹中的几个 zip 文件中有几个 csv 文件 例如 A zip 包含 csv1 csv2 csv3 B zip 包含 csv4 csv5 csv6 位于文件夹路径中C Folder 当我在文件夹中加载普通 csv 文件时 我使用以
  • 为什么没有一篇没有控制台杂耍的概念性 Git 文章? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我已经在 google 上搜索了大约 10 次或更多次 但找不到任何关于 rebase stash reflow 子模块 reflog 等的详细解释 我想要图画 数字 隐喻 只想要概
  • 使用 GCC 8.2.0 从 uint32_t 构造的 std::variant 更喜欢保存 int32_t 而不是 std::Optional

    我有以下代码 include
  • 如何在 Android 中获取 Google+ 好友

    Through 这个例子我能够将 Google 与 android 集成并获取我的信息 例如用户 ID 网址 个人资料名称和个人资料图片 我还想获取我所有朋友的列表并显示它 我该如何做到这一点以及哪个类有用 这可以使用 google plu
  • 是否可以根据 URL 同时为同一个 Web 应用程序提供单向和双向 ssl

    我有一个场景 我几乎没有其余的 Web 服务 其中很少需要强制执行相互 ssl 而很少应该只有单向 ssl 这里是相同的 Web 应用程序 这在基于 tomcat Spring 的应用程序中可能吗 抱歉回复晚了 是的 我这样做了 不确定是否
  • 在python中查看两个文件是否具有相同的内容[重复]

    这个问题在这里已经有答案了 可能的重复 查找重复文件并删除它们 在Python中 有没有一种简洁的方法来比较两个文本文件的内容是否相同 在 Python 中查看两个文件内容是否相同的最简单方法是什么 我能做的一件事就是对每个文件进行 md5