python读取文件操作,及大数据常用的读取函数readlines()
我们为什么需要python的读取操作
文件读写操作的重要性,在上一章节中我们举了个有关计算机内存和硬盘的例子,作了相关的介绍,其中我们提到的一点是,通常情况下,我们不用Python的读写功能来开发相应的功能,因为在PC端的软件当中,python的性能并不好,比起c/c++,c#这样的计算机语言来说,劣势较为明显。但是,我们还是要详细地来介绍python的读写操作,尤其是读取的操作,因为大数据和机器学习当中会经常性地遇到。为什么呢?
想想,大数据和机器学习,尤其是机器学习,是不是需要用算法来运算数据、探究数据的价值,并运用数据,这一操作就需要将数据读取到计算机的内存当中进行运算,硬盘只是保存数据而已,所以,我们就需要python的读取操作了。
python读取文件操作的三大基本步骤
和之前章节中介绍的python的文件写入操作一样,我们也先来简单介绍一下python读取文件操作的三大基本步骤:
- 打开文件:open(filepath, mode, encoding);
- 读取文件:read()
- 关闭文件:close()
python读取文件操作实例
f = open('/path/filename.txt', 'r', encoding=‘utf-8’)
f.read()
f.close()
代码解析
字符串'/path/filename.txt' 是我们保存文件的相对路径,'r'是我们读取文件的模式,encoding是编码格式。
注意:在这个过程中,我们是将文件的数据读取出来,加载在计算机的内存当中,并赋值给变量f。
with语句
跟文件的写入一样,通过with语句,可以不用写close()函数
with open('/path/filename.txt', 'r', encoding='urf-8') as f:
f.read()
read()函数
除了在开发机器学习模型之外,鄙人在python的其他的实战当中,从未用到文件的读写操作及其函数(之前有用python作开发桌面软件——一个类似word的软件——的练习,有用过),在机器学习当中,运用最多的读取函数则是readlines()而不是read()。
read( size ),里头的可选参数size可以用于读取“size”大小的数据,返回的是字符串或字节对象,若是size的值没有填写,或者是个负值,那么read()函数将读取文件的所有内容,这也是用python开发pc软件中“复制黏贴”的功能比较常用的函数。
readlines()函数
readlines()函数是将文件当中的所有行,一行一行地读取,并逐一写入一个列表list内,最终返回这个列表。
机器学习当中为什么会经常用到readlines()函数?我们来看一下下面这个表格:
ID | 性别 | 年龄 | 地址 | 所购商品 |
1 | 2 | 18 | 2 | 《python教程》 |
2 | 1 | 25 | 3 | 《python全栈教程》 |
3 | 1 | 26 | 6 | 《python机器学习实战》 |
我们来观察一下上面的数据,通常情况下,我们会将数据保存在一个.txt或excel表格当中,一行代表一个统计样本,有多少行就代表多少的统计量,一列则代表该样本的一个特征维度,多少列就代表多少个维度,比如3维度、10维度、100维度这样子,上面的表格表示的是3维度,ID和所购商品两列不算特征维度,其中所购商品可以表示成我们所有分类的标称型数据,与特征维度有不同的职能。
而正是因为统计样本是一行一行的,我们在处理数据(训练模型之前)的时候,通常就需要从文件中逐行逐行地读取数据,处理数据,比如归一化之类的,然后好在内存当中“拼装”成矩阵,以供机器学习的算法进行运算。所以,readlines()在机器学习当中更为常用,经常配合for循环来对数据进行处理、拼装。
readlines()的实例感觉没什么必要,在以后讲解到大数据或机器学习的时候,我们会继续讲解。下面我们再介绍读取操作的另一个函数readline()与readlines()就差一个复数形式的“s”。
readline()函数
readline()函数就是读取一行数据,用法除了size参数之外,就跟read()差不多,也是open()打开文件,readline()读取数据,close()关闭文件,实例就不多举了。
下一章节,我们将继续介绍python文件读写的模式mode。