首页...Python文件读写操作详解
Python程序设计第七章 文件操作/第二节

Python文件读写操作详解

2026-03-24

第七章 文件操作

第二节 Python文件读写操作详解

概述

本节主要讲解Python中如何进行文件的读取和写入操作。文件操作是程序与外部数据交互的重要方式,掌握文件读写技术对于数据存储、处理及应用开发至关重要。本节通过系统介绍文件的打开、关闭、读写模式,以及具体读写方法,帮助考生深入理解文件操作的原理和应用,提升编程能力。

学习目标:

  • 掌握文件的打开与关闭方法
  • 理解不同的文件读写模式
  • 熟练使用多种文件读取和写入函数
  • 了解文件操作中的异常处理和注意事项
  • 通过实例巩固文件操作技巧

核心概念

文件(File):存储在磁盘上的数据集合,程序通过文件进行数据的长期保存。文件可以是文本文件或二进制文件。

文件路径(Path):文件在计算机中的位置标识,分为绝对路径和相对路径。

文件打开(open):通过Python内置函数open(),以指定模式打开文件,返回文件对象,供后续操作。

文件模式(mode):指定文件操作类型,常见有:

  • 'r' 只读(默认),文件必须存在
  • 'w' 只写,不存在则创建,存在则清空
  • 'a' 追加写入,文件不存在则创建
  • 'b' 二进制模式
  • '+' 读写模式

文件对象(File object)open()返回的对象,包含读写文件的方法和属性。

文件关闭(close):释放文件资源,确保数据完整写入,防止资源泄露。

异常处理(Exception handling):处理文件操作中可能出现的错误,如文件不存在、权限不足等。


原理分析

文件操作本质上是程序与操作系统之间的数据交互。Python的open()函数通过系统调用打开文件,返回文件描述符封装成文件对象。不同的打开模式决定了文件的读写权限和行为。通过文件对象的方法,程序可实现数据的读取和写入。

Python中文本文件默认使用Unicode编码(一般是UTF-8),读取时将字节流转换成字符流;写入时则将字符编码为字节存储。

文件关闭是必要步骤,确保缓冲区数据写入磁盘,释放系统资源。使用with语句可以自动管理文件关闭,防止忘记关闭造成资源浪费。

异常处理机制保证程序稳定运行,在文件操作中捕获特定异常并合理处理,是良好编程习惯。


详细内容

1. 文件的打开与关闭

打开文件使用open()函数,语法:

file = open(filename, mode='r', encoding=None)

参数说明:

  • filename:文件路径,字符串
  • mode:文件打开模式,默认为只读
  • encoding:编码格式,文本文件推荐指定(如utf-8

关闭文件使用file.close(),释放资源。

推荐用法是with语句,自动关闭文件:

with open('example.txt', 'r', encoding='utf-8') as f:
    data = f.read()

2. 文件读取方法

  • read(size):读取指定字节数或字符数,size可省略,读取整个文件
  • readline():读取一行,包含换行符
  • readlines():读取所有行,返回列表,每行为列表元素

注意:读取后文件指针会移动,连续调用会继续读取后续内容。

示例:

with open('data.txt', 'r', encoding='utf-8') as f:
    content = f.read()
    print(content)

3. 文件写入方法

  • write(string):写入字符串,不自动换行
  • writelines(list_of_strings):写入字符串列表,不自动添加换行符

注意:写入文件时,文件必须以写模式或读写模式打开,且写入内容应为字符串类型。

示例:

with open('output.txt', 'w', encoding='utf-8') as f:
    f.write('Hello, world!\n')

4. 文件读写模式详解

模式 说明 示例
r 只读,文件必须存在 open('file.txt', 'r')
w 只写,文件不存在创建,存在清空 open('file.txt', 'w')
a 追加写入,文件不存在创建 open('file.txt', 'a')
rb 只读二进制 open('file.jpg', 'rb')
wb 只写二进制 open('file.jpg', 'wb')
r+ 读写,文件必须存在 open('file.txt', 'r+')
w+ 读写,覆盖原文件 open('file.txt', 'w+')
a+ 读写,追加模式 open('file.txt', 'a+')

5. 文件指针和文件定位

文件操作中,文件指针指示当前读写位置。常用方法:

  • tell():返回当前指针位置(字节数)
  • seek(offset, whence):移动指针,whence默认为0(文件开头),1为当前位置,2为文件末尾

示例:

with open('test.txt', 'r', encoding='utf-8') as f:
    print(f.read(5))  # 读取前5个字符
    print(f.tell())   # 输出5
    f.seek(0)        # 回到文件开头

6. 异常处理与资源管理

文件操作易出错,如文件不存在或权限不足,需捕获异常。

try:
    with open('nofile.txt', 'r', encoding='utf-8') as f:
        data = f.read()
except FileNotFoundError:
    print('文件未找到!')
except IOError:
    print('读取文件出错!')

推荐使用with语句自动管理资源,避免忘记close()


实例分析

实例1:统计文本文件字数

背景:读取文本文件内容,统计文件中所有单词数量。

代码

with open('sample.txt', 'r', encoding='utf-8') as f:
    content = f.read()
words = content.split()
print(f'单词总数: {len(words)}')

分析

  • 使用with保证文件关闭
  • read()读取全部内容
  • 使用split()按空白字符分割成单词列表
  • 计算列表长度获得单词数

结论:简单有效地统计文本单词数。

实例2:写入多行文本文件

背景:将列表中的多行文本写入新文件,每行单独写。

代码

lines = ['第一行内容', '第二行内容', '第三行内容']
with open('output.txt', 'w', encoding='utf-8') as f:
    for line in lines:
        f.write(line + '\n')

分析

  • 文件以写模式打开,存在则覆盖
  • 循环写入每行,手动添加换行符

结论:正确写入多行文本文件。

实例3:追加日志信息

背景:向日志文件追加新的日志条目,保持原有日志不变。

代码

log_entry = '2024-06-01 10:00:00 程序启动'
with open('log.txt', 'a', encoding='utf-8') as f:
    f.write(log_entry + '\n')

分析

  • 以追加模式打开文件
  • 新日志写入文件末尾

结论:追加模式适合日志写入。


常见误区

  1. 忘记关闭文件

    • 忘记调用close()会导致资源泄露,文件内容可能未及时写入。
    • 解决方法:使用with语句自动关闭。
  2. 未指定编码导致乱码

    • 默认编码可能与文件编码不一致,导致读取乱码。
    • 解决方法:明确指定编码参数,如encoding='utf-8'
  3. 写入操作未转换为字符串

    • write()只能写字符串,直接写入非字符串(如数字、列表)会报错。
    • 解决方法:先用str()转换或使用writelines()写入字符串列表。
  4. 误用文件模式

    • 使用'r'模式打开不存在文件会报错;使用'w'模式会清空文件内容。
    • 解决方法:根据需求选择合适模式,避免数据丢失。
  5. 错误处理不足

    • 未捕获文件操作异常,程序崩溃。
    • 解决方法:使用try-except捕获并处理异常。

应用场景

  1. 数据持久化存储

    • 程序运行结果保存至文本文件,便于后续分析。
  2. 配置文件读取

    • 读取程序配置参数,实现灵活配置。
  3. 日志记录

    • 记录程序运行状态,方便调试和维护。
  4. 批量文件处理

    • 读取多个文件内容,实现数据整合和统计。
  5. 文本数据分析

    • 读取文本进行自然语言处理、情感分析等。

知识拓展

  • 二进制文件操作:使用'rb''wb'模式读写图片、音频等二进制数据。

  • 文件路径操作:使用ospathlib模块处理跨平台文件路径。

  • 文件异常细化处理:分类处理FileNotFoundErrorPermissionError等异常。

  • 文件内容增量读取:使用迭代器和生成器读取大文件,避免内存溢出。

  • JSON和CSV文件读写:扩展文件操作到结构化数据格式处理。


总结回顾

本节详细介绍了Python文件的读写操作,涵盖文件打开、关闭、各种读写方法、文件模式、指针操作及异常处理。通过实例演示了文本文件的读取、写入和追加。指出常见误区和注意事项,帮助考生避免常见错误。结合实际应用场景,增强学习的针对性和实用性。掌握本节内容,将为后续数据处理和程序开发打下坚实基础。


良好的文件操作习惯和理解是Python程序设计的重要部分,希望考生通过本节内容系统掌握文件读写的各项技能,为全国计算机等级考试二级Python部分的顺利通过奠定基础。

重点知识点

1

文件的打开与关闭方法及with语句应用

2

文件读写模式及其区别

3

文本文件读取方法:read、readline、readlines

4

文件写入方法及注意事项

5

文件指针的定位与移动(tell和seek)

6

文件操作中的异常处理技巧

7

常见文件操作误区及正确做法

8

文件读写的实际应用场景

9

文件操作的原理及系统调用基础

10

二进制文件和结构化文件的拓展操作