read () /readline () /readlines ()
作用:
用于读取文件内容
统一前提:
1、先打开文件open()
2、操作完成关闭文件,推荐使用 with open(...) 自动关闭
3、编码用 encoding='utf-8',避免中文乱码
操作:
file.txt 文件内容
第一行:Hello Python 第二行:学习文件读取 第三行:read readline readlines
一、 read() 一次性读取全部内容
一次性把文件所有内容读出来,返回一个字符串。
with open('test.txt', 'r', encoding='utf-8') as f:
content = f.read() # 读取全部内容
print(content)
print(type(content)) # <class 'str'>输出: 第一行:Hello Python 第二行:学习文件读取 第三行:read readline readlines <class 'str'>
返回:单个字符串(包含所有换行、空格)
优点:简单、直接,适合小文件
缺点:大文件会占满内存(千万不要用它读 GB 级文件)
二、 readline () —— 每次只读取一行
逐行读取,每次调用只返回一行内容(字符串),读完一行指针移到下一行开头。
语法:
文件对象.readline()
逐行读取
with open('test.txt', 'r', encoding='utf-8') as f:
line1 = f.readline() # 读第一行
line2 = f.readline() # 读第二行
line3 = f.readline() # 读第三行
print(line1, end='') # end='' 去掉 print 自带换行
print(line2, end='')
print(line3, end='')循环读取
with open('test.txt', 'r', encoding='utf-8') as f:
while True:
line = f.readline()
if not line: # 读到空 = 文件结束
break
print(line.strip()) # strip() 去掉换行/空格三、 readlines () —— 读取所有行,返回列表
一次性读取所有行,把每一行作为列表的一个元素,返回字符串列表。
语法:
文件对象.readlines()
with open('test.txt', 'r', encoding='utf-8') as f:
lines = f.readlines() # 返回列表
print(lines)
print(type(lines)) # <class 'list'>遍历列表
with open('test.txt', 'r', encoding='utf-8') as f:
lines = f.readlines()
for line in lines:
print(line.strip())返回:列表(每个元素是一行字符串)
优点:方便按行索引 / 遍历,代码简洁
缺点:同样会一次性加载全部内容,不适合超大文件
四、最简单的文件读取(推荐)
Python 最优雅、最推荐的读取方式:直接遍历文件对象(等价 readline(),省内存)
with open('test.txt', 'r', encoding='utf-8') as f:
for line in f: # 逐行读取,最推荐!
print(line.strip())总结:
小文件:用 read() 最简单;需要按行操作用 readlines()
大文件:必须用 readline() 或直接 for line in f:(省内存)
三个方法都包含换行符 \n,用 strip() 可以去掉
永远优先用 with open(),自动关闭文件,不会报错