with open('file.txt', 'r') as f:
line = f.readline() # 读取一行,包含行末的换行符
lines = f.readlines() # 读取所有行,每行保留换行符
当使用 readline() 或 readlines() 方法时,文件会按行分割,而换行符(如 \n、\r\n 等)是行分割的标志
with open('file.txt', 'r') as f:
data = f.read(5) # 读取前 5 个字符,不管是否跨换行符用 read(n) 读取指定字节数,或用 read() 读取全部内容时,文件会被视为连续的字节流,不会主动按换行符分割
with open('file.txt', 'r') as f:
for line in f:
print(line) # 每行不带换行符
直接迭代文件对象(如 for line in f)时,本质上是按行读取,会以换行符为分割点,且自动去除行末的换行符(类似 strip('\n')):
read() 方法读取的是字符还是字节,取决于文件的打开模式和编码设置,具体分为以下两种情况:
以文本模式('r')打开时:读取的是字符
底层按字节流读取,但会根据 encoding 参数(如 gbk/utf-8)自动将字节解码为字符。返回值是 str 类型。
以二进制模式('rb')打开时:读取的是字节,返回值是 bytes 类型,需要手动用 decode(encoding) 转成字符。