分别将txt文件分成N行吗?

Ars*_*tic 3 python text iterator lines

我想将一个非常大的.txt文件拆分成相等的文件,每个文件包含N行。并将其保存到文件夹

with open('eg.txt', 'r') as T:
    while True:
        next_n_lines = islice(T, 300)
        f = open("split" + str(x.pop()) + ".txt", "w")
        f.write(str(next_n_lines))
        f.close()
Run Code Online (Sandbox Code Playgroud)

但这会创建一个包含数据的文件

" < itertools.islice object at 0x7f8fa94a4940 >" 
Run Code Online (Sandbox Code Playgroud)

txt文件中。

我想保留原始txt文件中保留的相同结构和样式。

并且此代码到达文件末尾时也不会自动终止。如果可能的话,我将使代码停止写入文件,如果没有剩余数据要写入,则退出。

Pad*_*ham 5

您可以iter与一起使用islice,使用枚举一次使n行,为文件赋予唯一的名称。 f.writelines将每行列表写入一个新文件:

with open('eg.txt') as T:
    for i, sli in enumerate(iter(lambda:list(islice(T, 300)), []), 1):
        with open("split_{}.txt".format(i), "w") as f:
            f.writelines(sli)
Run Code Online (Sandbox Code Playgroud)

您的代码将永远循环,因为您不包含任何中断条件,将其iter与空列表一起使用将意味着循环在迭代器用尽时结束。

此外,如果你想传递一个islice对象写入你只需调用writelines就可以了,即f.writelines(next_n_lines)str(next_n_lines)