【Python入门】文件操作 —— 读取、写入与追加

【Python入门】文件操作 —— 读取、写入与追加
文章目录前言一、打开文件 —— open()函数二、读取文件的方法2.1 read(size) —— 读取内容2.2 readline() —— 每次读取一行2.3 readlines() —— 读取所有行返回列表2.4 使用 for 循环直接遍历文件对象最常用且内存友好2.5 关闭文件 —— close()2.6 with open 上下文管理器三、文件的写入与追加2.1 写入模式 w2.2 追加模式 a四、常见问题与错误纠正总结前言文件操作是编程中不可或缺的一部分。Python通过内置的open函数提供了丰富的文件读写能力。本文将详细介绍文件的基本操作及常用方法。一、打开文件 ——open()函数open(file, moder, encodingNone)用于打开文件返回一个文件对象。file文件路径相对或绝对mode访问模式常用r只读默认文件指针在开头文件不存在则报错w只写文件存在则清空覆盖原有内容不存在则创建a追加文件存在则在末尾追加内容不存在则创建encoding编码格式文本文件推荐固定写utf-8避免乱码fopen(word.txt,r,encodingutf-8)print(type(f))# class _io.TextIOWrapper二、读取文件的方法2.1read(size)—— 读取内容文本模式下读取指定字符数二进制模式读取字节数不传参数则读取文件全部内容。contentf.read()# 读取全部内容content_10f.read(10)# 读取前10个字符2.2readline()—— 每次读取一行读取单行内容自带换行符 \n打印时会有空行。line1f.readline()line2f.readline()print(line1.strip(),line2.strip())# 一般配合strip去除换行和空格2.3readlines()—— 读取所有行返回列表一次性读取所有行每一行作为列表元素适合小文件使用。linesf.readlines()forlineinlines:print(line.strip())2.4 使用for循环直接遍历文件对象最常用且内存友好逐行读取不会一次性加载全部文件内容适合超大文件。forlineinf:print(line.strip())2.5 关闭文件 ——close()f.close()关闭文件释放系统资源。如果代码中途报错close()可能无法执行导致文件句柄泄露。因此推荐 with 语句。2.6 with open 上下文管理器自动关闭、自动刷新缓冲区代码更安全简洁。withopen(word.txt,r,encodingutf-8)asf:forlineinf:print(line.strip())# 离开with代码块文件自动关闭三、文件的写入与追加2.1 写入模式 ‘w’覆盖写入会清空原文件所有内容。write()不会自动换行需要手动加\n。withopen(test.txt,w,encodingutf-8)asf:f.write(hello world!)补充write内容会先存入内存缓冲区不会立刻落盘with结束会自动刷新缓冲区并关闭文件无需手动flush。2.2 追加模式 ‘a’在文件末尾新增内容不会覆盖原有数据。withopen(test.txt,a,encodingutf-8)asf:f.write(\nnew line)四、常见问题与错误纠正read(size)易错点文本模式读取的是「字符数」不是字节数只有二进制 rb/wb 模式才是字节数新手极易混淆。文件指针问题如果先read()读完整个文件指针会停在末尾后续 for 循环遍历将读不到任何内容需要重新打开文件或seek(0)重置指针。文件覆盖踩坑w模式打开文件会直接清空原有内容练习时切勿用w模式误操作原始数据文件。编码问题所有文本文件操作必须指定encoding“utf-8”否则Windows系统默认gbk编码极易出现乱码、报错。总结open()三大基础模式r只读、w覆盖写入、a追加写入操作文本文件务必指定encodingutf-8避免乱码。文件读取四种方式按需选用大文件优先直接for循环遍历文件对象小文件可使用read()、readlines()。注意区分文本模式字符、二进制模式字节理解read(size)的区别。推荐优先使用with open上下文管理器自动关闭文件、刷新缓冲区防止文件句柄泄露减少异常带来的数据丢失问题。牢记文件指针机制读取完毕后指针位于文件末尾重复读取需要重置指针或重新打开文件。警惕w模式风险打开瞬间清空原有文件内容不要误操作原始数据write()方法不会自动追加换行需要手动添加\n。