使用python比较一个文件与另一个文件是否缺少条目

使用python比较一个文件与另一个文件是否缺少条目,python,file,search,Python,File,Search,我有两个文件。我想获得Master.txt中新订单的id列表,但不在Subset.txt中。Master.txt还包含现有订单(EXIST),这些订单不在Subset.txt中,因此它不是文件的1:1比较 foundCount = 0 notFoundCount = 0 notFoundDict = [] for i, logLine in enumerate(open(master, "r").readlines()): if len(logLine ) > 1:

我有两个文件。我想获得Master.txt中新订单的id列表,但不在Subset.txt中。Master.txt还包含现有订单(EXIST),这些订单不在Subset.txt中,因此它不是文件的1:1比较

foundCount = 0
notFoundCount = 0
notFoundDict = []

for i, logLine in enumerate(open(master, "r").readlines()):
    if len(logLine ) > 1:
        if "NEW" in log_line:
            newItemDict = dict(item.split(":") for item in newItem.split(","))
            id = newItemDict ['id']

            for i, subsetLogLine in enumerate(open(subset, "r").readlines()):
                if id in subsetLogLine and "NEW" in subsetLogLine:
                    foundCount += 1
                    break
                else: 
                    notFoundCount += 1
                    notFoundDict.append(id)
不幸的是,它在Master.txt的第一行中获得唯一id,与Subset.txt中的一行匹配,但所有其他行都没有该id,因此它将所有这些id添加到notFoundDict

因此,我希望它搜索所有文件B,如果在整个文件中找不到,则附加该id,如果找到,则中断

Master.txt
{"Type":"NEW","id":201753427,"time":"08:11:57.545","title":"string"}
{"Type":"NEW","id":201753195,"time":"08:11:58.616","title":"string"}
{"Type":"EXIST","id":201753195,"time":"08:11:59.639","title":"string"}
{"Type":"UPDATE","id":201753195,"time":"08:13:57.319","title":"string"}
{"Type":"UPDATE","id":201753195,"time":"08:15:51.119","title":"string"}
{"Type":"NEW","id":201753199,"time":"08:19:13.114","title":"string"}


Subset.txt
{NEWORDID="201753427" ORDTYPE="NEW" ORIGIN="LocationA" USERNAME="..." TIME="08:11:57.645"}
{NEWORDID="201753195" ORDTYPE="NEW" ORIGIN="LocationC" USERNAME="..." TIME="08:11:57.619"}
{NEWORDID="201753199" ORDTYPE="NEW" ORIGIN="LocationC" USERNAME="..." TIME="08:19:13.114"}

你考虑过不同的方法吗

将文件1中的所有新订单ID加载到一个集合中

将文件2中的所有新订单ID加载到一个集合中

然后查找文件1集中不在文件2集中的所有对象


似乎是解决问题的更简单方法,除非文件异常大。

请给出每个文件中包含一行或两行数据的简单示例,以供测试之用。如您所见,两个文件的格式/内容略有不同。但是OrderId和订单类型应该是唯一的。但是主文件可以具有相同的id,但在与文件A->subsea.txt和文件B->master.txt中的“类型”更改问题结合时是唯一的,并参考NewOrdID等。。为了便于理解,Master.txt中最多可以有60000个条目,subset.txt中可以有5000到20000个条目。那太大了吗?这真的可以用。我必须重写我的脚本,因为我没有真正解析subset.txt中的id。我在master.txt上完成了id的所有处理。因此,我必须在以后进行一些重写和更新。我使用了100000多个对象的列表/集合,没有任何问题。