吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2919|回复: 13
收起左侧

[Python 转载] 【笔记】30行代码,低内存占用解读超大csv文件

[复制链接]
禁之零零 发表于 2019-8-17 23:31
[Python] 纯文本查看 复制代码
import shleximport datetime

if __name__ == "__main__":
    File_All_Path = r"D:\1000W行.csv"  # 以二进制方式读取文件
    File_ID = open(File_All_Path, "rb")
    LineNumber = 0  # 创建行号变量
    Read_Title = False  # 创建是否读标题变量
    Start_Time = datetime.datetime.now()  # 计时开始
    Line_Decode = "GBK"  # 设置编码
    while 1:
        Line_Byte = File_ID.readline()  # 读入一行二进制内容
        if not Line_Byte: break  # 判断二进制文本是否为空,为空则到文件尾部,跳出循环
        RowTest = Line_Byte.decode(Line_Decode).rstrip()  # 编码转换,并去除尾部的换行符号
        LineNumber += 1  # 行号变量自增
        if LineNumber == 1 and Read_Title == False: continue  # 是否读取第1行标题
        if LineNumber == 1000000:  # 读取第100W行内容
            str = shlex.shlex(RowTest, posix=True)  # 解析行内容数据,以逗号分割,不分割引号内容中的逗号
            str.whitespace = ','
            str.whitesapce_split = True
            ListTest = list(str)
            print(LineNumber, ListTest)
    End_Time = datetime.datetime.now()
    print("耗时:", End_Time - Start_Time)
    File_ID.close()

免费评分

参与人数 1吾爱币 +3 热心值 +1 收起 理由
苏紫方璇 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 禁之零零 发表于 2019-8-21 23:30
幻象 发表于 2019-8-18 17:30
原理是Line_Byte这个变量只申请了一次,后面的数据对其覆盖,这样来节省内存的?

因为是一行一行的读取,不是一次性载入全部,读取了一行上一行的内存就被释放了
 楼主| 禁之零零 发表于 2019-8-18 11:24

一个Excel里面一张表只能存100W数据,现有的方法模块,都能解决啦
mzussle 发表于 2019-8-17 23:44
a87399 发表于 2019-8-18 00:08
对不起,是24行。
blueawter_cg 发表于 2019-8-18 00:18
用封装好的我一行代码就够了
佚丶名 发表于 2019-8-18 07:41
谢谢  可以来试试看
一人之下123456 发表于 2019-8-18 08:23
谢谢楼主,先备份收藏了,有需要的话会试试的。
幻象 发表于 2019-8-18 17:30
原理是Line_Byte这个变量只申请了一次,后面的数据对其覆盖,这样来节省内存的?
gavinfeng 发表于 2019-8-18 21:50
有现行的库。。。
 楼主| 禁之零零 发表于 2019-8-20 20:34
gavinfeng 发表于 2019-8-18 21:50
有现行的库。。。

啥库?当时在网上找了不行,csv库读不了数据太多的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-27 00:32

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表