8.11 读取文本文件
在python中可以使用open函数打开文件,打开文件需要注意以下内容:
1、文件是否存在,检查文件路径是否正确;
2、文件是文本文件还是二进制文件;
3、是否是压缩文件;
4、以哪种方式打开文件;
在python中打开文件可以使用open函数,open函数数据的结果为一个迭代器。open函数选项参数:大部分情况下以只读方式打开文件,直接写文件名即可。
表1 open函数选项参数
| 参数 | 释义 |
|---|---|
| file | 要打开的文件名,文件需存在 |
| mode | 打开方式,只读为'r', 写文件为“w”,二进制文件为“b”,追加写入为“a” |
| buffering | 缓存大小 |
| encoding | 编码方式 |
file1 = 'pydata/10.fa'
f_object = open(file1, 'r')
打开文件之后可以通过readline()和readlines()方法来读取文件的内容。在程序中默认都是读取文件一行,每一行以换行符结尾。如果想一次读取文件全部内容,可以使用readlines()方法。但是此种方法会一次将文件全部内容读取。如果文件太大,比如文件有10G,那么一次就将10G文件全部加载到内存中,造成内存不足。因此,尽量不使用该方法。文件读写完毕后,要及时关闭文件。
#读取第一行
line1 = f_object.readline()
print(line1)
#读取第二行
line2 = f_object.readline()
print(line2)
#读取第三行
line3 = f_object.readline()
print(line3)
#读取剩余全部行
all_lines = f_object.readlines()
print(all_lines)
# 关闭文件
f_object.close()
一般文件都有很多行,甚至几百万行,不能一行一行读写处理,open打开文件对象也是一个迭代器,所以一般都是将文件对象加入到循环中,通过循环来一行行处理文件。
file1 = 'pydata/10.fa'
f_object = open(file1, 'r')
for line in f_object:
print(line)
读取文件之后一般需要进行三个常规操作:
第一:进行模式匹配,筛选需要处理的行,需要应用到正则表达式部分;
第二:去除结尾的换行符,使用strip()方法,strip还可以分为lstrip()处理左侧,rstrip()处理右侧;
第三:如果包含多列内容,使用split()方法将其拆分为数组;
file1 = 'pydata/10.fa'
f_object = open(file1, 'r')
# for循环读取文件
for line in f_object:
if line.startswith("#"):
continue
else:
new_line = line.strip().split()
print(new_line)
# while循环读取文件
file1 = 'pydata/10.fa'
f_object = open(file1, 'r')
line = f_object.readline()
while line:
print(line.strip())
line = f_object.readline()
print(line.strip())
line = f_object.readline()