两个文件之间的区别

时间:2019-11-21 09:18:50

标签: python

第一个文件包含以下IP地址:10.0.0.1和10.0.0.2,第二个文件包含:10.0.0.1和192.168.1.1。我的小脚本应该显示文件1和文件2之间的差异。根据我的示例,输出应为10.0.0.2。

file1 = input('Filename1: ')
f = open(file1,'r')
lines1  = f.readlines() 

file2 = input('Filename2: ')
g = open(file2,'r')
lines2  = g.readlines()

for line1 in lines1:
    for line2 in lines2:
        if line1 != lines2:
            print(line1) 

运行代码时,我得到:

Filename1: l1.txt
Filename2: l2.txt
10.0.0.1

10.0.0.1

10.0.0.2
10.0.0.2

有什么想法吗?

4 个答案:

答案 0 :(得分:1)

1)创建两个集合,即s1和s2。 2)更新各自集中的文件1和文件2的内容。 3)有一种名为set1.difference(set2)的方法,可以为您提供预期的输出。

答案 1 :(得分:1)

使用set比较实体的出现情况:

file1 = "f1.txt"
f = open(file1,'r')
lines1  = f.read().splitlines() 

file2 = "f2.txt"
g = open(file2,'r')
lines2  = g.read().splitlines()

differences = set(lines1) - set(lines2)
print("\n".join(differences))

输出:

10.0.0.2

答案 2 :(得分:1)

您正在将一个文件的每一行与另一文件的每一行进行比较,这会导致错误。 您需要使用集合:

f1Content = set(open('l1.txt').read().splitlines())
f2Content = set(open('l2.txt').read().splitlines())
print(f1Content.difference(f2Content))

输出:

set(['10.0.0.2'])

答案 3 :(得分:1)

看起来就是您想要的:

with open("f1.txt",'r') as f:
    lines1  = f.readlines()
lines1 = [line.strip() for line in lines1]

with open("f2.txt",'r') as f:
    lines2  = f.readlines()
lines2 = [line.strip() for line in lines2]


for line in lines1:
    if line not in lines2:
        print(line)


##You can do it by set operations as well
print(set(lines1).difference(set(lines2)))