智能分割TXT大文件

查看 72|回复 2
作者:想把风吹灭的火   
有些太大的TXT文本电脑无法一下全部打开,使用程序对文本导入数据库的话又是单线程的导入,速度比较慢,所以分割一下,使用多线程,速度应该会比较快点。
CMD的命令自带的有分割命令,不过对于TXT文本内的数据无法准确的断点,这样导致我们多线程导入数据的时候。会出错只能舍弃一些数据。
所以我想,可不可以指定一个大小,使用python,让程序在此基础上,往后找到合适的断点位置,这里我使用的是换行符。
[Python] 纯文本查看 复制代码if __name__ == "__main__":
    path="E:\\download\\测试数据.txt"
    with open(path,"rb") as fp:
        # 设置分割的大小,单位k
        size=300
        size=size*1024
        # 开始位置
        start=0
        # 读取的最终位置
        end=0
        # 计数器
        i=1
        byte=b"0"
        while byte!=b"":
            # 设置指针位置,主要是为了查找指针后面\n的位置,这个操作简称为“寻值”
            fp.seek(end+size,0)
            byte=fp.read(1)
            i+=1
            # 寻值
            while byte!=b"\n" and byte!=b"":
                byte=fp.read(1)
            end=fp.tell()
            # 存入文件
            with open("E:\\download\\a\\1\\"+str(i*1)+".txt","wb") as fp1:
                fp.seek(start,0)
                fp1.write(fp.read(end-start))
                start=end
        
分割后的数据,可以使用CMD命令“type ./*.txt >> ./11.txt”进行合并,我生成了一份测试TXT文本,使用这段代码进行了分割,最后再进行,合并,导入到EXCEL软件中,进行数据的对比,最终得到的结果,无数据丢失。
本来,我还想写多线程导入数据库来着的,不过这段代码我有已经看不懂了,处于玄学状态,测试的是没问题,不过不保证真的不出问题。
个人测试一个40G的文本,分割成1G的单文本(分割2G会报错,我也不知道为啥),总共需要约4分钟。
如果再使用多线程直接导入数据的话,相信速度就会快起来了。
PS:测试文本的数据是我用EXCEL直接生成的,不是啥机密数据

测试数据.txt
(964 KB, 下载次数: 0)
2023-2-1 00:57 上传
点击文件名下载附件
测试数据,这是随机生成的,没有啥秘密
下载积分: 吾爱币 -1 CB

数据, 文本

tek2y   

不错的思路,赞一个
零下八度   

你这思路不对呀,不是应该换个浏览器嘛?
几十GB而已,换个txt文件浏览器,还是可以秒开的嘛,你这切割还得几分钟....
您需要登录后才可以回帖 登录 | 立即注册

返回顶部