ZetCode

Python 读取文本

最后修改于 2024 年 1 月 29 日

在本文中,我们将展示如何在 Python 中读取文本数据。

我们可以使用内置的 open 函数或 pathlib 模块在 Python 中读取文本数据。

Path.read_text 将文件内容读取为字符串。

open 函数用于在 Python 中打开文件。

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None)

file 是要打开的文件的名称。mode 指示文件将如何打开:用于读取、写入或追加。buffering 是一个可选整数,用于设置缓冲策略。

encoding 是用于解码或编码文件的编码名称。errors 是一个可选字符串,指定如何处理编码和解码错误。newline 控制换行字符的行为。

文件模式为

模式 含义
'r'用于读取(默认)
'w'用于写入,先截断文件
'a'用于写入,如果文件存在则在文件末尾追加
'b'二进制模式
't'文本模式(默认)
'+'更新(读取和写入)
'x'独占创建,如果文件存在则失败

默认模式是文本模式。

words.txt
falcon
sky
book
sum
cup
cloud
water
win

我们有这个简单的文本文件。

使用 read 函数读取 Python 文本

read 函数最多读取 size 个字符作为单个字符串。如果 size 参数为负数,则读取直到 EOF。

main.py
#!/usr/bin/python

with open('words.txt', 'r') as f:

    contents = f.read()
    print(contents)

程序读取整个文件并打印其内容。

with open('words.txt', 'r') as f:

我们在读取模式下打开 works.txt 文件。由于我们没有指定二进制模式,因此文件以默认文本模式打开。该函数返回文件对象 fwith 语句通过封装常见的准备和清理任务来简化异常处理;此外,它还会自动关闭已打开的文件。

contents = f.read()

我们调用文件对象的 read 函数。由于我们没有指定任何参数,它会读取整个文件。

$ ./main.py
falcon
sky
book
sum
cup
cloud
water
win

在下一个示例中,我们显式指定了文本模式。

main.py
#!/usr/bin/python

with open('words.txt', 'rt') as f:

    contents = f.read()
    print(contents)

程序读取整个 words.txt 文件。

使用 readline 读取 Python 文本

readline 函数读取直到换行符或 EOF 并返回单个字符串。如果流已处于 EOF,则返回空字符串。如果指定了 size 参数,则最多读取 size 个字符。

main.py
#!/usr/bin/python

with open('words.txt', 'r') as f:

    line = f.readline()
    print(line.rstrip())

    line = f.readline()
    print(line.rstrip())

在示例中,我们从文件中读取了两行。rstrip 函数会从字符串中删除末尾的换行符。

$ ./main.py
falcon
sky

使用 readlines 读取 Python 文本

readlines 函数读取并返回流中的行列表。

main.py
#!/usr/bin/python

with open('words.txt', 'r') as f:

    lines = f.readlines()

    print(lines)

    for line in lines:

        print(line.strip())

在示例中,我们使用 readlines 读取文件内容。我们打印行列表,然后使用 for 语句循环遍历列表。

$ ./main.py
['falcon\n', 'sky\n', 'book\n', 'sum\n', 'cup\n', 'cloud\n', 'water\n', 'win']
falcon
sky
book
sum
cup
cloud
water
win

使用 for 循环读取 Python 文本

由于从 open 函数返回的文件对象是可迭代的,我们可以直接将其传递给 for 循环。

main.py
#!/usr/bin/python

with open('works.txt', 'r') as f:

    for line in f:

        print(line.rstrip())

程序迭代文件对象以打印文本文件的内容。

$ ./main.py
falcon
sky
book
sum
cup
cloud
water
win

使用 Path.read_text 读取 Python 文本

Path.read_text 函数以文本模式打开文件,读取它,然后关闭文件。它是用于轻松读取文本的便捷函数。它不适用于大文件。

main.py
#!/usr/bin/python

from pathlib import Path

path = Path('words.txt')

content = path.read_text()
print(content)

程序一次性将整个文本文件读取到一个字符串中。

$ ./main.py
falcon
sky
book
sum
cup
cloud
water
win

来源

Python 语言参考

在本文中,我们展示了如何在 Python 中读取文件。

作者

我叫 Jan Bodnar,我是一名热情的程序员,拥有丰富的编程经验。我从 2007 年开始撰写编程文章。迄今为止,我已撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出所有 Python 教程