如何用python读取超大文本文档

因为做实验的关系,必须要读入五六七个G的文本txt,刚开始用之前读小文件的代码,读入速度非常慢,读一行的速度比写一行的速度慢了几百倍,我直觉肯定是哪里把读入文件的问题复杂化了,于是开始查资料,终于找到了合适的解决方案

总之就是python里map和split的正确使用

def loaddata(memory, path):
    with open(path,'r') as f:
        X_row = 0  # 表示矩阵的行,从0行开始
        for i in range(MEMORY_CAPACITY):  
            line = f.readline()
            if i%100 == 0:
                print('load'+str(i))
            #这里千万不要用split(' ')这种用字符将文件拆开的方法,这样做后续读入数组会非常慢,直接用()就可以
            lis = line.split()  # 将数据分隔开
            numbers_float = list(map(float, lis)) # 这句是关键!!!
            dqn.memory[X_row,:] = numbers_float[0:state_dim * 2 + 1 + 1 + 1]
            X_row += 1  # 然后方阵A的下一行接着读
    return memory

感谢这位朋友这位朋友的精彩回答!


版权声明:本文为LUCKY_SANTA原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。