第一个文件包含以下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
有什么想法吗?
答案 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)))