如何在Python 3中将文件拆分为多个输出文件?

时间:2015-06-01 11:27:30

标签: python file split

我有一个问题陈述:

  

splitfile(filename,numberoffiles)

     

如果无法均匀分布,则分为3行的13行文件将具有长度为4,4和5的输出文件。 (如果它们不能均匀分布,则不能有大于1行的差异)

我开始学习python,我必须创建一个函数,将文件拆分为参数中指定的较小文件。

我遇到问题的是我不知道如何处理这种情况,因为它基于文件数量而且差异大于1的概念是不允许的。

1 个答案:

答案 0 :(得分:0)

问题的本质(据我所知)是如何确定每个输出文件将包含的行数。这就是我为Python 3.4.3提出的:

def get_line_counts(total_lines, number_of_files):
    base_size = total_lines // number_of_files
    line_count_list = [base_size for i in range(number_of_files)]
    files_with_an_extra_line = total_lines % number_of_files
    for i in range(files_with_an_extra_line):
        line_count_list[len(line_count_list) - (i + 1)] += 1
    return line_count_list


for i, n in enumerate(get_line_counts(13, 3)):
    print("file {0} will contain {1} line(s)".format(i, n))

导致

file 0 will contain 4 line(s)
file 1 will contain 4 line(s)
file 2 will contain 5 line(s)

其余代码只是基本文件I / O:从输入文本文件中读取 n 行并将它们写入输出文本文件。