【Python面试笔记】1.9.2 基础语法 文件操作 读取文件(read、readlines)

在Python中,文件操作是处理外部数据的常见需求;Python通过内建的open()函数来打开文件,之后可以读取、写入或处理文件内容;这里将介绍如何读取文件内容,主要包括两种常用方法:read()readlines()

1. 打开文件

在进行文件操作之前,首先需要打开文件;使用内置的open()函数来打开文件,格式如下:

file = open('文件路径', '模式')
  • 'r':读取模式,默认模式,如果文件不存在会报错
  • 'w':写入模式,会覆盖原文件(如果文件不存在则创建)
  • 'a':追加模式,数据会添加到文件末尾
  • 'rb':以二进制模式读取
  • 'wb':以二进制模式写入

例如,打开一个文件用于读取:

file = open('example.txt', 'r')

2. 读取文件内容

2.1 使用 read()

read()方法用于读取整个文件的内容;它会返回文件的所有内容作为一个字符串,如果文件较大,可以考虑分块读取;例子:

file = open('example.txt', 'r')  # 以读取模式打开文件

'''使用 open() 函数以读取模式('r')打开文件 example.txt
此时,文件指针位于文件的开始位置'''

content = file.read()  # 读取整个文件内容

print(content)  # 打印文件内容
file.close()  # 关闭文件

如果文件很大,read()会一次性读取所有内容,可能会占用大量内存;为避免这种情况,可以分次读取:

file = open('example.txt', 'r')
chunk = file.read(100)  # 每次读取100个字符

'''通过 file.read(100) 读取文件中的前100个字符
read(100) 会返回一个包含文件中100个字符的字符串
如果文件剩余内容少于100个字符,返回的是文件剩余的内容'''

while chunk:
    print(chunk, end='')  # 打印读取的部分内容
    chunk = file.read(100)  # 继续读取

'''这部分使用了一个 while 循环来持续读取文件,直到文件内容读取完毕
while chunk: 的条件判断每次读取的内容是否为空
如果不为空(即还有内容可读),就打印读取的内容,并继续读取接下来的100个字符

print(chunk, end=''):打印读取的内容,end='' 确保输出不会在每次打印时添加额外的换行符
(因为 chunk 本身可能已经包含换行符)

chunk = file.read(100):再次读取文件的下100个字符,直到文件末尾'''

file.close()

2.2 使用 readlines()

readlines()方法会将文件的每一行作为一个元素返回,返回的是一个列表,其中每个元素代表文件中的一行;该方法通常用于逐行读取文件;例子:

file = open('example.txt', 'r')
lines = file.readlines()  # 读取所有行

'''使用 file.readlines() 读取文件的所有行,
并返回一个列表 lines,
列表中的每个元素代表文件中的一行

每一行的末尾通常包含换行符(\n),这个换行符会被包括在每行的内容中

例如,如果文件的内容是:
Hello, World!
Python is great.
Goodbye!

那么 lines 列表会是:
['Hello, World!\n', 'Python is great.\n', 'Goodbye!\n']'''

for line in lines:
    print(line.strip())  # 每行输出去掉末尾的换行符

'''使用 for 循环遍历 lines 列表中的每一行
line.strip() 会去掉字符串两端的空白字符(包括换行符)
在这里,strip() 主要是去掉每行末尾的换行符 \n,使得输出结果更为整洁

例如,对于上述示例,line.strip() 会将每行的换行符去除,使得输出变成:
Hello, World!
Python is great.
Goodbye!
print(line.strip()) 会逐行打印文件内容'''

file.close()

如果文件内容过多,readlines()会一次性读取所有行,适合小型文件;如果文件过大,可能会导致内存问题;这时,推荐使用循环逐行读取:

file = open('example.txt', 'r')
for line in file:  # 按行读取文件
    print(line.strip())  # 输出每行内容
file.close()

3. 上下文管理器 (with)

使用with语句可以自动管理文件的打开与关闭,即使发生异常也能确保文件正确关闭;推荐使用这种方式来处理文件操作;例子:

with open('example.txt', 'r') as file:
    content = file.read()
    print(content)

'''as file 将 open('example.txt', 'r') 打开的文件对象赋值给变量 file'''

with语句块结束时,文件会自动关闭,避免了忘记关闭文件的情况

总结

  • read():读取整个文件内容,并返回一个字符串;如果文件很大,可能导致内存问题
  • readlines():读取文件的每一行,并返回一个列表;如果文件较大,可能会占用大量内存
  • 推荐使用with语句管理文件打开和关闭

你可能感兴趣的:(【Python面试笔记】1.9.2 基础语法 文件操作 读取文件(read、readlines))