我正在编写一个Python脚本,用于处理两个文件 - 一个包含UUID列表,另一个包含大量的日志条目 - 每行都包含来自另一个文件的UUID之一。该程序的目的是从file1创建UUIDS列表,然后对于每次在日志文件中找到的UUID,增加与之关联的值以记录匹配次数。
简而言之,计算每个UUID在日志文件中出现的次数。目前,我有一个列表,其中UUID作为键,'hits'作为值。然后是另一个循环,它遍历日志文件的每一行,并检查日志中的UUID是否与UUID列表中的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”比使用编译后的正则表达式更快。我认为分块读取文件而不是逐行读取可以通过减少磁盘I/O时间来提高性能,但在一个测试文件(约200MB)上的性能差异微不足道。如果有人有其他方法,我将非常感激 :)