Предполагая, что вы можете поместить весь файл журнала в память, я бы сохранял идентификаторы потоков в словаре для строк, записанных этим потоком, а затем записывал целые файлы в конце.
thread_map = {} # keys are thread IDs; values are lists of log lines
for line in open(filetoopen):
for i in sThdiD:
if i in line:
if i not in thread_map:
thread_map[i] = []
thread_map[i].append(line)
for key in thread_map:
f = open(folderpath+"/"+key+".log", "w")
for line in thread_map[key]:
f.write(line)
f.close()
Если вы не можете сохранить весь файл журнала в памяти, попробуйте многопроходное решение, в котором вы записываете каждый файл по одному.
in_file = open(filetoopen)
for i in sThdiD:
in_file.seek(0) # Reset the file to read from the beginning.
out_file = open(folderpath+"/"+i+".log", "w")
for line in in_file:
if i in line:
out_file.write(line)
out_file.close()
in_file.close()