Skip to main content
 首页 » 编程设计

python之逐行比较文件,看是否相同,如果相同则输出

2025年05月04日17hnrainll

我该怎么做,我有一些文件,我已经在其中对信息进行了排序,我想将该文件中的某个索引与另一个文件中的索引进行比较,一个问题是文件非常大,有数百万行.我想逐行比较我拥有的文件,如果它们匹配,我想使用索引方法输入这两个值以及其他值。

=======================

让我澄清一下,我想说 line[x] x 将保持不变,因为它的格式是统一的,我想在另一个文件中针对 line[y] 运行 line[x],我想这样做到整个文件并将每个匹配对输出到另一个文件。在另一个文件中,我还希望能够包含第一个文件中的其他部分,就像添加更多索引一样; line[a]、line[b]、line[c]、line[d],最后是 line[y] 作为该信息的匹配项。

尝试 3:

我有一个包含以下格式信息的文件:

#x是一行

 x= data,data,data,data,data,data 

有数百万行。

我有另一个文件,同样的格式:

    xis a line 
    x= data,data,data,data 

我想使用第一个文件中的 x[#] 和第二个文件中的 x[#],我想看看这两个值是否匹配,如果匹配,我想输出它们以及其他几个 x[#]来自第二个文件的值,它们在同一行。

这对理解有帮助吗? 文件的格式就像我说的那样:(但是有数百万,我想在两个文件中找到对,因为它们都应该匹配)

  line 1  data,data,data,data 
  line 2  data,data,data,data 

来自文件 1 的数据:

 (N'068D556A1A665123A6DD2073A36C1CAF', N'A76EEAF6D310D4FD2F0BD610FAC02C04DFE6EB67',     
N'D7C970DFE09687F1732C568AE1CFF9235B2CBB3673EA98DAA8E4507CC8B9A881'); 

来自文件 2 的数据:

00000040f2213a27ff74019b8bf3cfd1|index.docbook|Redhat 7.3 (32bit)|Linux 
00000040f69413a27ff7401b8bf3cfd1|index.docbook|Redhat 8.0 (32bit)|Linux 
00000965b3f00c92a18b2b31e75d702c|Localizable.strings|Mac OS X 10.4|OSX 
0000162d57845b6512e87db4473c58ea|SYSTEM|Windows 7 Home Premium (32bit)|Windows 
000011b20f3cefd491dbc4eff949cf45|totem.devhelp|Linux Ubuntu Desktop 9.10 (32bit)|Linux 

它排序的顺序是字母数字,我想用 slider 的方式。我的意思是,如果 file1[x] 小于 file2[x],则根据一个值是否大于另一个值向下或向上移动 slider ,直到找到匹配项,如果找到匹配项,则将输出与其他值一起打印这将识别该散列。

我想要的结果是:

file1[x] 及其在 file2[x] 上的对应匹配输出到文件,以及其他 file1[x],其中 x 可以是行中的任何索引。

请您参考如下方法:

使用这种方法并逐行比较,您不必将文件存储在内存中,因为文件很大。

with open('file1.txt') as f1, open('file2.txt') as f2, open('file3.txt','w') as f3: 
    for x, y in zip(f1, f2):  
        if x == y: 
            f3.write(x)