我有一組需要與100K輸入文件匹配的400K關鍵字集。從大型存儲庫到文件的關鍵字匹配
我現在的做法如下。
代碼:
import glob
with open("keyword.txt") as inp:
keyword_set=set([lin.strip().lower() for lin in inp])
for fil in glob.glob("file/path/*.txt"):
with open(fil) as inp, open("output.txt","w") as out:
file_txt = inp.read().lower()
for val in keyword_set:
if val in file_txt:
out.write("{}\t{}".format(fil, val))
Keyword_Sample:
BUENOS AIRES
Argentina
因爲我遍歷一個大的庫需要花費大量的時間(從幾秒變化到分鐘的文件。 )。 有沒有什麼辦法可以增加通過量並減少所需的時間。
猜你的例子中只有1個匹配的每個實例?如果是的話,那麼在'out.write'之後的新行上添加'break'在相同的縮進級別 –
@Chris_Rands否,那不是我爲單個文件有多個關鍵字匹配的情況。我只是將它們分別寫入下行流程 –