面试题答案
一键面试区别
- 读写位置:
r+
:以读写模式打开文件,文件指针放在文件开头。既可以读取文件内容,也可以从文件开头写入数据,写入的数据会覆盖原有内容。w+
:以读写模式打开文件,会先清空文件内容(如果文件存在),然后将文件指针放在文件开头。如果文件不存在,则创建新文件。
- 文件不存在时的行为:
r+
:若文件不存在,会抛出FileNotFoundError
异常。w+
:若文件不存在,会创建新文件。
实际场景应用举例
r+
应用场景: 假设我们有一个存储用户信息的文本文件user_info.txt
,内容如下:
Alice,25
Bob,30
现在要修改Bob的年龄为35,可以使用r+
模式:
try:
with open('user_info.txt', 'r+') as file:
lines = file.readlines()
for i, line in enumerate(lines):
if 'Bob' in line:
parts = line.split(',')
parts[1] = '35\n'
lines[i] = ','.join(parts)
file.seek(0)
file.writelines(lines)
file.truncate()
except FileNotFoundError:
print('文件不存在')
在这个例子中,先读取文件内容,找到需要修改的行进行修改,然后将文件指针移到开头,重新写入修改后的内容,并通过truncate
方法确保文件大小与新写入的内容一致。
w+
应用场景: 假设我们要生成一个新的学生成绩文件student_scores.txt
,并写入一些初始成绩信息。如果文件已存在,先清空内容再写入。
students = [
('Tom', 85),
('Jerry', 90)
]
with open('student_scores.txt', 'w+') as file:
for student, score in students:
file.write(f'{student}:{score}\n')
file.seek(0)
content = file.read()
print(content)
这里使用w+
模式打开文件,先清空文件(如果存在),然后写入新的学生成绩信息,最后还可以读取文件内容并打印出来。