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()