我想编写一个 python 脚本来区分两个包含域列表的 txt 文件。
下面是我能够创建的脚本。
import difflib
file1 = open("2.txt").readlines()
file2 = open("diff.txt").readlines()
with open ('diff.txt', 'w', encoding = 'UTF8') as diff:
for line in difflib.unified_diff(file2,file1,n=0):
for prefix in ('---','+++','@@'):
if line.startswith(prefix):
break
if line.startswith('+'):
diff.write("New DNS Entry:\n{}\n".format(line[1:]))
elif line.startswith('-'):
diff.write("Removed DNS Entry:\n{}\n".format(line[1:]))
由于unified_diff
产生上下文和字符,如 +++、--- 和 @@,我修改了我的代码以省略这个并禁用上下文。
我从上面的代码收到的输出如下:
Removed DNS Entry:
--
New DNS Entry:
++
Removed DNS Entry:
example.com
如上所示,输出标题-
为“已删除的 DNS 条目”和任何带有+
“新 DNS 条目”的标题,并在两个 txt 文件之间的行更改的第一次迭代时停止(尽管除了 example.com 之外还有多个更改)
我期望的输出是任何以 a 开头的行都+
应该组合在一起并命名为“新 DNS 条目”,同样任何以开头的行都-
应该组合在一起并命名为“已删除的 DNS 条目”
最终,“新 DNS 条目”组应显示其适当的 DNS 解析。
非常感谢这里的任何帮助!