txt文档的读入时的内存溢出
读入TXT文档有多种方式,首先我来为大家简单介绍两种:
方法一
按行读取,一行一行添加到一个二维数组中,这样对于每一行都可以进行一下操作,代码如下:
data = []
for line in open(txt_path):
data.append(line)
print(data[])
这种读取方式最后的结果是储存成一个二维数组,由于TXT中的数据都是字符串的形式读入,这样每行的处理可以放到for循环中,有利于操作。
方法二
import pandas as pd
data = pd.read_scv(txt_path,sep = '')
print(data)
这种读取方式的好处是将TXT文件读取为一个Excel,对应的是对Excel的操作,更方便。并且TXT文件中的第一行可以作为索引。
溢出的问题
我的TXT文档有几千行,每一行又有很多内容,其实我只需要读取最后一行的数据,采用方法一的时候却很多次运行结果都显示没有读入数据。
Python可能跳出来说:我的储存也是有限度的!
问题解决
由于我只是想要读取数据的最后一行,所以这个问题的解决也就等价于如何不占过多内存地读取文档的最后一行
方法一
for line in open(txt_path):
pass
print(line)
可能你会说这是一句错误的语法,但是这个却真的work
为什么呢?有大牛告诉我吗
我请你喝秋天的第一杯奶茶
方法二
line = []
for line in open(txt_path):
pass
print(line
既然觉得方法一不够行,那么加一个line的定义总归可以喽,这样的语法这大多数的编译器下运行应该都是OK的
方法三
data = []
line_num = 1
for line in open(txt_path):
if line_num > 0:
line_num = line_num + 1
data.append(line)
else:
break
print(data[0])
该方法可以用来读取最后的几行,或者从后向前读取TXT文件,亲测有用
最后,经过了很久的编程发现,其实吧数据储存为Excel的格式是最方便的,Excel真的好好用,调用的时候数据可以直接转换成储存时的格式,不必像TXT文件一样都变成了字符串!!