我有一个生成字符串的生成器,我需要将其写入输出文件。但是,我还需要让每个输出文件包含固定数量的行。我也希望逐步这样做。意思是我不想保存内存中的所有行并立即将它们刷新到文件中,因为每个文件所需的行数可能很大。
我似乎无法通过Python中的“with”语句找到一种方法。
类似的东西:
for line in line_generator:
write_to_output_file(line, _MAX_LINES_PER_FILE)
答案 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))