MST

星途 面试题库

面试题:Python文件模式之中等题

在Python中,使用 'r+' 和 'w+' 模式打开文件有什么区别?请举例说明它们在实际场景中的应用。
43.7万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

区别

  1. 读写位置
    • r+:以读写模式打开文件,文件指针放在文件开头。既可以读取文件内容,也可以从文件开头写入数据,写入的数据会覆盖原有内容。
    • w+:以读写模式打开文件,会先清空文件内容(如果文件存在),然后将文件指针放在文件开头。如果文件不存在,则创建新文件。
  2. 文件不存在时的行为
    • r+:若文件不存在,会抛出FileNotFoundError异常。
    • w+:若文件不存在,会创建新文件。

实际场景应用举例

  1. 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方法确保文件大小与新写入的内容一致。

  1. 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+模式打开文件,先清空文件(如果存在),然后写入新的学生成绩信息,最后还可以读取文件内容并打印出来。