РЕДАКТИРОВАТЬ благодаря @bruno desthuilliers, которые напомнили мне о правильном пути сюда:
Перебирать файловый объект (не «readlines»):
def split_by_platform(FILE_NAME, out1, out2, out3):
with open(FILE_NAME, "r") as infile, open(out1, 'a') as of1, open(out2, 'a') as of2, open(out3, 'a') as of3:
for line in infile:
if "X" in line:
of1.write(line)
elif "Y" in line:
of2.write(line)
elif "Z" in line:
of3.write(line)
РЕДАКТИРОВАТЬ с подсказкой @dim:
Вот более общий подход для произвольной длины списка флаговых символов:
def loop(infilename, flag_chars):
with open(infilename, 'r') as infile:
for line in infile:
for c in flag_chars:
if c in line:
with open(c+'.txt', 'a') as outfile:
outfile.write(line)