This approach is similar to Lev's but uses itertools
because it's fun.
dont_break = lambda l: l.strip() != 'string_pattern'
with open('input') as source:
with open('out_1', 'w') as out1:
out1.writelines(itertools.takewhile(dont_break, source))
with open('out_2', 'w') as out2:
out2.writelines(source)
You could replace the dont_break function with a regular expression or anything else if necessary.