Использование python для сравнения одного файла с другим на предмет отсутствия записей - PullRequest
0 голосов
/ 23 октября 2018

У меня есть два файла.Я хочу получить список идентификаторов для новых заказов, которые находятся в Master.txt, но не в 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 совпадает со строкой в ​​Subset.txt, но все остальные строки не имеют этого идентификатора, поэтому он добавляет все эти идентификаторы в notFoundDict.

Поэтому я хочу, чтобы он выполнил поиск по всему файлу B и добавил этот идентификатор, если он не найден во всем файле, и прервал его, если он был найден.

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 Ответ

0 голосов
/ 23 октября 2018

Рассматривали ли вы другой подход?

Загрузить все новые идентификаторы заказа из файла 1. В набор.

Загрузить все новые идентификаторы заказа из файла 2. в набор.

Затем найдите все объекты в наборе файлов 1, которых нет в наборе файлов 2.

Похоже, это более простой способ решения вашей проблемы, если файлы необычайно большого размера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...