Python文件读取方法:read()、readline()和readlines()的区别

2023-08-08 15:35:47 浏览数 (2)

在Python中,读取文件是一项常见的任务。Python提供了多种方法来读取文件内容,其中包括read()、readline()和readlines()方法。本文将介绍这些方法的区别和使用场景。

read()

read()方法用于一次性读取整个文件的内容,并将其作为一个字符串返回。语法如下:

代码语言:javascript复制
file_object.read()
  • 优点:读取整个文件,将文件内容放到一个字符串变量中。
  • 劣势:如果文件非常大,尤其是大于内存时,无法使用read()方法。

简单示例:

代码语言:javascript复制
file = open("test.txt", "r ", encoding="utf-8")
print(file.read())

---------------
输出结果如下:
1.曼城
2.利物浦
3.曼联
4.切尔西
5.热刺
6.阿森纳
7.纽卡斯尔
8.莱斯特
9.布莱顿
10.水晶宫
11.西汉姆联
12.诺丁汉森林

readline()

readline()方法用于逐行读取文件的内容。每次调用readline()方法,它会读取文件的下一行,并将其作为一个字符串返回。语法如下:

代码语言:javascript复制
file_object.readline()
  • 优点:readline()方法每次读取一行;返回的是一个字符串对象,保存当前行的内存,不占用内存
  • 缺点:速度比readlines()慢很多

示例代码:

代码语言:javascript复制
# 读取一行
f = open('test.txt', 'r ', encoding='utf-8')
print("读取一行 ====")
line = f.readline()
while line:
    # 打印当前文件指针的位置
    print("文件指针:", f.tell())
    print("行内容:", line)
    line = f.readline()

---------------------
输出结果如下:
读取一行 ====
文件指针: 10
行内容: 1.曼城

文件指针: 23
行内容: 2.利物浦

文件指针: 33
行内容: 3.曼联

文件指针: 46
行内容: 4.切尔西

文件指针: 56
行内容: 5.热刺

文件指针: 69
行内容: 6.阿森纳

文件指针: 85
行内容: 7.纽卡斯尔

文件指针: 98
行内容: 8.莱斯特

文件指针: 111
行内容: 9.布莱顿

文件指针: 125
行内容: 10.水晶宫

文件指针: 142
行内容: 11.西汉姆联

文件指针: 160
行内容: 12.诺丁汉森林

readlines()

readlines()方法用于将文件的所有行读取到一个列表中。每一行都是列表中的一个元素,列表按照文件中的顺序保持。语法如下:

代码语言:javascript复制
file_object.readlines()

简单示例

代码语言:javascript复制
# 读取多行
f = open('test.txt', 'r ', encoding='utf-8', errors='ignore')
print("读取多行 ====")
print(f.readlines())

-----------------------
输出结果如下:
读取多行 ====
['1.曼城n', '2.利物浦n', '3.曼联n', '4.切尔西n', '5.热刺n', '6.阿森纳n', '7.纽卡斯尔n', '8.莱斯特n', '9.布莱顿n', '10.水晶宫n', '11.西汉姆联n', '12.诺丁汉森林']

三者区别于使用场景

  • read()方法适用于读取较小的文件,因为它将整个文件内容加载到内存中。您可以使用read()方法一次性获取文件的全部内容,并将其存储在一个字符串变量中进行处理。
  • readline()方法适用于逐行处理较大的文件。您可以使用一个循环来逐行读取文件内容,并在每次迭代中处理当前行。
  • readlines()方法适用于需要将文件的所有行存储在列表中的情况。您可以使用readlines()方法将文件的所有行读取到一个列表中,然后对列表进行迭代或进一步处理。

总结

根据需求和文件的大小,选择适合的文件读取方法是很重要的。如果需要一次性读取整个文件的内容并进行处理,可以使用read()方法。如果需要逐行处理较大的文件,可以使用readline()方法。如果需要将文件的所有行存储在一个列表中进行处理,可以使用readlines()方法。

记住,在处理文件时,需要注意文件的打开和关闭操作,并妥善处理可能出现的异常。选择合适的文件读取方法可以提高代码的效率和可读性,并满足对文件内容的处理需求。

0 人点赞