在Python中写入具有固定行数的多个文件

时间:2015-11-15 21:16:31

标签: python python-2.7 file-io

我有一个生成字符串的生成器,我需要将其写入输出文件。但是,我还需要让每个输出文件包含固定数量的行。我也希望逐步这样做。意思是我不想保存内存中的所有行并立即将它们刷新到文件中,因为每个文件所需的行数可能很大。

我似乎无法通过Python中的“with”语句找到一种方法。

类似的东西:

for line in line_generator:
    write_to_output_file(line, _MAX_LINES_PER_FILE)

2 个答案:

答案 0 :(得分:0)

以下内容将每_MAX_LINES_PER_FILE

更改目标文件
for i, line in enumerate(line_generator):
    if not i % _MAX_LINES_PER_FILE:
        # open a new output file
        output_file = open(filename_generator(i // _MAX_LINES_PER_FILE), "w")

    print >> output_file, line

答案 1 :(得分:0)

如果您不介意将每个部分存储在内存中,可以使用itertools.islice:

from itertools import islice


def write_slices(g, n):
    for ind, sli in enumerate(iter(lambda: list(islice(g, n)), []), 1):
        with open("out_{}".format(ind), "w") as f:
            f.writelines(sli)

或者一次只是一行:

def write_slices(g, n):
    for ind, line in enumerate(g):
        with open("out_{}".format(ind), "w") as f:
            f.write(line)
            f.writelines(islice(g, n-1))