【代码世界 No.2】Python学习笔记 #2 - 读取文本文件(.txt)的几种方式
利用Python读取文本格式文件(.txt)的时候,存在多种方式进行读取,需要根据业务和数据特点来选择。本篇对比几种简单常用的读取方式。

数据文件
要打开的文本文件名称为 “ 数据文本文件 ”,和 python文件 - readtxt.py 放置在同一个目录下,文件中的内容如下:

比较方便的方式是直接打开文件,保存为一个对象,然后逐行读取。
其中,open()是打开要读取的文件,r 表示只读方式打开,encoding为编码。
这里用 with 的方法打开,不用再进行close()关闭文件的操作了,返回的fobj是一段数据对象,可以对其进行读取等操作。


从结果发现每行下面多了一行空行,因为输出时会自动添加一个换行符,解决办法是对每一行消除右边的换行符,即 改为print(line.rstrip())。

一、read、readlines和readline
这三个都是Python自带的 I/O 接口。
1)read() 可以直接读取整个文件,返回的是字符串类型。


2)readlines() 也是一次性读取整个文件,并其保存为一个列表,其中的每一行就是列表中的一项。这种方法对于特别大型的文件缺点是会多占用一些内存。
因为是列表,如果知道要提取的行数的话,可以用 readlines()[10:50]读取特定行数内容(10-49行)。


3) readline() 可逐行读取文件,好处是内存占用小,缺点是速度会慢(但是一般正常大小的文件感觉不出来区别),由于是逐行读取,所以要想遍历读文件的话,需要用循环结构语句来操作。


上面这几个方法中如果不需要隔一行显示,可用rstrip()来去掉换行符。
二、linecache
linecache()是Python自带的一个模块,使用前需要引用这个模块,其中 getline("文件“ , 行数) 可以读取特定行的数据,需要注意的是从0开始计数的,因此 下方的 第四行,其实提取的是文件中第5行的数据。


三、枚举 enumerate
利用枚举方式,可以逐行的获取行号和内容



除了上面这几种基本方式外,数据分析的时候还可以用pandas的模块read_csv()读取。
Tips:
打开文件时候的几个常用标识符:
r : 读取文件,文件不存在会报错
w: 写入文件,若文件不存在则会先创建再写入,会覆盖原文件
a : 写入文件,若文件不存在则会先创建再写入,不会覆盖原文件,追加在文件末尾
rb,wb: 用于读写二进制文件,例如图像、音频视频等。