当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《分别将txt文件分成N行吗?》经验,为你挑选了1个好方法。

我想将一个非常大的.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()

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

" < itertools.islice object at 0x7f8fa94a4940 >" 

txt文件中。

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

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



1> Padraic Cunn..:

您可以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)

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

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

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有