两行文件之间的区别

dev*_*ull 1 python windows scripting file

我有两个巨大的文件(file1和file2).这两个文件都组织成行.我需要生成第三个文件file3,其中包含文件1但不在文件2中的行.这些行没有排序.

在Windows中获取它的最简单(最智能)方法是什么?

use*_*342 8

最好的策略可能取决于文件的确切程度.如果第一个文件可以放入内存中,那么您可以轻松地构建一组行,并file2从该集合中删除行.这要求内存量大致与大小成比例file1.

with open('file1') as f1:
    lineset = set(f1)
with open('file2') as f2:
    lineset.difference_update(f2)
with open('file3', 'w') as out:
    for line in lineset:
        out.write(line)
Run Code Online (Sandbox Code Playgroud)

请注意,此解决方案还将消除重复的行file1.

  • 这将导致所有三个文件同时打开,这(在这种情况下)是不需要的,因此是不合需要的. (2认同)
  • 小心资源并不是一个不成熟的优化.它可以说根本不是优化,因为它甚至不会影响执行时间,而是影响同时获取的操作系统资源的数量.例如,在Windows上,保持文件打开锁定而不被其他程序使用,因此执行此操作的时间超过必要时会产生潜在问题. (2认同)