from itertools import groupby
out_filename = '/tmp/f{}.txt'
lines_per_file = 50000
with open('infile.txt') as infile:
for file_number, lines in groupby(enumerate(infile), key=lambda x: x[0] // lines_per_file):
with open(out_filename.format(file_number), 'w') as outfile:
outfile.writelines(line for line_number, line in lines)
这里有一种使用^{} 的方法:
所以这里的技巧是使用每行的行号,使用整数除法将其分组成块,然后使用分组键作为输出文件名的计数器。你知道吗
比你已经拥有的更好吗?读代码有点复杂,但是当你尝试使用模运算分组时,它不需要处理那些恼人的边缘情况。你知道吗
相关问题 更多 >
编程相关推荐