Я работаю над Python script, чтобы пройти через два файла - один из которых содержит список UUID, а другой содержит большое количество записей журнала - каждая строка содержит один из UUID из другого файла. Цель программы - создать список UUIDS из файла1, а затем каждый раз, когда UUID будет найден в файле журнала, увеличьте связанное значение для каждого момента, когда будет найдено совпадение.
Короче говоря, подсчитайте, сколько раз каждый UUID появляется в файле журнала. На данный момент у меня есть список, который заполняется UUID в качестве ключа, а "hits" - как значение. Затем еще один цикл, который итерации по каждой строке файла журнала, и проверка того, соответствует ли UUID в журнале UUID в списке UUID. Если он совпадает, он увеличивает значение.
for i, logLine in enumerate(logHandle): #start matching UUID entries in log file to UUID from rulebase
if logFunc.progress(lineCount, logSize): #check progress
print logFunc.progress(lineCount, logSize) #print progress in 10% intervals
for uid in uidHits:
if logLine.count(uid) == 1: #for each UUID, check the current line of the log for a match in the UUID list
uidHits[uid] += 1 #if matched, increment the relevant value in the uidHits list
break #as we've already found the match, don't process the rest
lineCount += 1
Он работает так, как должен, но я уверен, что есть более эффективный способ обработки файла. Я прошел через несколько руководств и обнаружил, что использование "count" выполняется быстрее, чем использование скомпилированного регулярного выражения. Я думал, что чтение файлов в кусках, а не по строкам, приведет к повышению производительности за счет сокращения объема времени ввода-вывода диска, но разница в производительности тестового файла ~ 200 МБ была бы небрежной. Если бы у кого-то были другие методы, я был бы очень благодарен:)