科研日志--python大文件打开内存溢出

关于python运行大文件导致死机的问题

最近因为科研需要,需要打开一个巨大的txt文件。借鉴了Python读取大文件的行数中的代码片段,成功按行读取了大小为5.6GB的.txt文件。但最终因为所设置的model变量需要将5.6GB文件的数据全部转换为.npy的形式,占用内存过大导致溢出。

所用代码片段如下:

count=0
model = {}
fp = codecs.open("filename","r")
while 1:
    buffer = fp.readlines(1024*1024*16)
    if not buffer:
        break
    for line in buffer:
        splitLine = line.split()
        if splitLine[1] == '.' or splitLine[1] == '[email protected]':
            continue
        word = splitLine[0]
        embedding = [float(val) for val in splitLine[1:]]
        model[word] = embedding
    count+=len(buffer)
    print (count)
print (count)
print ('over')
fp.close()

期间测试了一些常用的文本读取方法:

1. f.read()

该命令会将所读取的文本变成一行类型为str的数据输出

2. f.readlines()

该命令会按行读取文件,并将每一行视为一个长长的str字符串,储存在list中。所以要用到str类型的split命令时,需要先从list中索引字符串

你可能感兴趣的:(科研)