在Python中读取txt文本文件可以通过内置的open()
函数结合file
对象的read()
, readline()
, readlines()
等方法实现。
1. 使用read()
方法
read()
方法会读取文件的全部内容,并将其作为一个字符串返回。
# 打开文件并读取全部内容
with open('Resources/雨巷.txt', 'r', encoding='utf-8') as file:
content = file.read()
print(content)
这里有几点需要注意的:
(1)这里用到的是文件的相对路径,也可以使用文件的绝对路径,如C:\Users\admin\Desktop\雨巷.txt。
(2)with
语句是推荐的文件操作方式,它可以自动管理文件的打开和关闭(它可以避免文件损坏或资源泄露)。
(3)这里指定了文件的编码格式为encoding='utf-8'
,这对于处理非ASCII字符(如中文)的文件非常重要。假如环境中的默认编码方式已设置为utf-8
,可以不带这个参数,假如不确定,可以使用以下方法检查:
import sys
# 检查环境中文件的编码方式
print(sys.getdefaultencoding())
2. 使用readline()
方法
readline()
方法每次读取文件中的一行。
# 打开文件并逐行读取
with open('Resources/雨巷.txt', 'r', encoding='utf-8') as file:
line = file.readline()
while line:
print(line, end='') # end='' 避免打印额外的换行符
line = file.readline()
3. 使用readlines()
方法
readlines()
方法会读取整个文件,并将文件的每一行作为一个元素存储在列表中返回。
# 打开文件并读取全部行到一个列表中
with open('Resources/雨巷.txt', 'r', encoding='utf-8') as file:
lines = file.readlines()
for line in lines:
print(line, end='') # 同样,end='' 避免打印额外的换行符
4.读大文本文件
当我们读取的文本文件很大时,由于内存的限制,我们就不能用read()
或readlines()
方法。我们可以采用一种逐步读取文件内容的方法。
1、逐行读取:
在for
循环中直接使用文件对象时,由Python自动逐行迭代文件,也可以使用上面的readline()
方法。
with open('Resources/雨巷.txt', 'r', encoding='utf-8') as file:
for line in file:
# 处理每一行
print(line, end='') # 如果不需要额外的换行符,可以使用end=''
2、分块读取
使用read(size)
方法,通过size
设置每次读取的字符数。
with open(file='Resources/雨巷.txt', mode='r', encoding='utf-8') as file:
chunk_size = 20 # 例如,每次读取20个字符
chunk = file.read(chunk_size)
while chunk:
print(chunk, end='') # 如果不需要额外的换行符,可以使用end=''
chunk = file.read(chunk_size)