python 脚本:拆分txt文件

前提:最近朋友遇到个问题,csv文件行数太多,导致用 excel 打开文件都费劲,他把内容放到了 txt 文件中,希望能找个工具把这个大文件(百万行的量级)拆成若干个小文件,便于对里边的数据进行操作。但是并没有找到现成的工具,希望我帮忙写个 python 脚本。这个练手机会可不能放过。

分析:拿到这个需求之后,我立刻想到了文件读取神器:with open … as f,用来读取文件和写入新文件。那么就只剩中间的一点逻辑了。逻辑其实也不难,拿到文件总行数,设定一个每个新文件的行数,这样做个除法就有了新文件的个数。接着以新文件个数为次数进行遍历,每个文件内再以行数进行遍历,写入数据,整个功能就完成了。

下面是源代码:

def split():
    # 读取源文件,文件名最好加上绝对路径
    with open('test.txt', 'r') as f:
        # 把数据写入列表
        wordlist = f.readlines()
        # 算出总行数
        length = len(wordlist)
    # 设置每个拆分文件的行数
    unit = 900000
    # 计算新文件的个数,如果总行数整除新文件行数,就取这个商的值,如果不整除,取商加1的值
    file_amount = length // unit + 1 if length % unit > 0 else length // unit
    # 遍历所有新文件
    for num in range(file_amount):
        # 计算新文件中第一行在源文件中对应的行号
        start = num * unit
        # 计算新文件中最后一行在源文件中对应的行号
        end = length if length < (num + 1) * unit else (num + 1) * unit
        # 写入新文件,文件名最好加上绝对路径
        with open(str(num + 1) + '.txt', 'w+') as f:
            # 遍历新文件的所有行
            for i in range(start, end):
                # 把列表中的数据写入新文件
                f.write(wordlist[i])

if __name__ == '__main__':
    split()
    原文作者:yspg_217
    原文地址: https://blog.csdn.net/yspg_217/article/details/123354222
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞