Apr-13-2019, 02:45 PM
I like generators (tested code here)
import itertools as itt import os import sys def gen_names(): for cnt in itt.count(1): yield 'MOLECULE{}'.format(cnt) def augmented_lines(line_seq, name_seq): name_seq = iter(name_seq) for line in line_seq: yield line if line.startswith('@<TRIPOS>MOLECULE'): yield next(name_seq) + '\n' if __name__ == '__main__': src_fn = os.path.join(os.path.dirname(__file__), 'five-molecules.txt') with open(src_fn) as infile: sys.stdout.writelines(augmented_lines(infile, gen_names()))