def grouper(n, iterable, fillvalue=None):
    """Collect data into fixed-length chunks or blocks"""
args = [iter(iterable)] * n
return zip_longest(fillvalue=fillvalue, *args)
n = 300
with open('really_big_file.txt') as f:
    for i, g in enumerate(grouper(n, f, fillvalue=''), 1):
        with open('small_file_{0}'.format(i * n), 'w') as fout:
            fout.writelines(g)
Разделение большого текстового файла на более мелкие текстовые файлы по номерам строк с использованием Python