python3中比较2个以上文件

发布于 2024-12-11 14:43:29 字数 212 浏览 0 评论 0原文

我需要使用 python3 检查两个以上的文件是否不同:是否有某种库可以实现这一点?

  • 这些文件可能相对较大,
  • 我不关心它们本身的差异:知道它们不同就足够了(即我更喜欢在发现任何差异时立即停止的东西)

filecmp 一次处理两个文件,当然,我可以进行多次检查,但这正是我想要绕过的(如果可能的话)。

I need to check if more than two files are different, using python3: is there some kind of library for that?

  • the files might be relatively big
  • I don't care about the differences themselves: knowing they are different is enough (i.e. I'd prefer something that stops as soon as it finds any difference)

filecmp does two files at once, of course I can do multiple checks, but that's exactly what I'm trying to bypass, if possible.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

指尖上得阳光 2024-12-18 14:43:29

以下函数采用文件名列表作为参数。
如果任何两个文件至少有一个字节不同,则返回 True,否则返回 False

def find_difference(list_of_files, block_size=1000):
    fs=[open(f,'rb') for f in list_of_files]
    while True:
        first=True
        for f in fs:
            if first:
                first=False
                s1=f.read(block_size)
                end=(s1==b'')
                continue
            s2=f.read(block_size)
            if s1!=s2:
                return True
            if end and (s2!=b''):
                end=False
        if end:
            return False

The following function takes a list of filenames as a parameter.
Returns True if any two files are different by at least one byte, else False

def find_difference(list_of_files, block_size=1000):
    fs=[open(f,'rb') for f in list_of_files]
    while True:
        first=True
        for f in fs:
            if first:
                first=False
                s1=f.read(block_size)
                end=(s1==b'')
                continue
            s2=f.read(block_size)
            if s1!=s2:
                return True
            if end and (s2!=b''):
                end=False
        if end:
            return False
痴意少年 2024-12-18 14:43:29

像这样使用 filecmp :

import filecmp; 
filecmp.cmp(file1,file2)

use filecmp like this:

import filecmp; 
filecmp.cmp(file1,file2)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文