Python零基础入门 第九章:文件操作 本章目标掌握文件的打开与关闭方法掌握文件的读取和写入操作理解不同文件打开模式的区别掌握上下文管理器with语句的使用掌握文件和目录的常用操作能够编写程序处理文本文件 1. 文件操作概述文件是存储在计算机外部存储设备上的数据集合,文件操作是编程中最常用的功能之一。通过文件操作,我们可以将程序中的数据永久保存到磁盘上,也可以从磁盘上读取已有的数据。Python提供了非常简洁的文件操作接口,无需关注底层细节即可轻松处理文件。2. 文件的打开与关闭2.1 打开文件使用open()函数打开文件,语法格式:文件对象 = open(文件路径, 打开模式, encoding="编码格式") 说明: - 文件路径:可以是相对路径(当前目录下的文件)或绝对路径- 打开模式:指定文件的操作方式,常用模式见下表- encoding:指定文件的编码格式,处理中文时通常使用"utf-8" 2.2 常用打开模式 模式 说明 r 只读模式(默认),文件必须存在,不存在则报错 w 只写模式,文件不存在则创建,存在则覆盖原有内容 a 追加模式,文件不存在则创建,存在则在末尾追加内容 r+ 读写模式,文件必须存在 w+ 读写模式,文件不存在则创建,存在则覆盖 a+ 读写模式,文件不存在则创建,存在则在末尾追加 rb 二进制只读模式,用于处理非文本文件(图片、视频等) wb 二进制只写模式,用于处理非文本文件 2.3 关闭文件文件操作完成后必须关闭,否则会占用系统资源。使用close()方法关闭文件:文件对象.close() 示例代码: 打开文件 f = open("test.txt", "w", encoding="utf-8") 写入内容 f.write("Hello Python!") 关闭文件 f.close() 3. 文件的读取操作3.1 read()方法读取文件的全部内容,返回一个字符串。 打开文件 f = open("test.txt", "r", encoding="utf-8") 读取全部内容 content = f.read()print(content) 关闭文件 f.close() 读取指定长度的内容 f = open("test.txt", "r", encoding="utf-8")content = f.read(5) strip()去除换行符和空格f.close() 4. 文件的写入操作4.1 write()方法将字符串写入文件,返回写入的字符数。 w模式:覆盖原有内容 f = open("test.txt", "w", encoding="utf-8")f.write("第一行内容\n")f.write("第二行内容\n")f.close() a模式:在末尾追加内容 f = open("test.txt", "a", encoding="utf-8")f.write("第三行内容\n")f.close() 4.2 writelines()方法将一个字符串列表写入文件,不会自动添加换行符。lines = ["第一行\n", "第二行\n", "第三行\n"]f = open("test.txt", "w", encoding="utf-8")f.writelines(lines)f.close() 5. 上下文管理器with语句使用with语句可以自动管理文件的打开和关闭,无论程序是否发生异常,都会自动关闭文件,避免资源泄漏。语法格式:with open(文件路径, 打开模式, encoding="编码格式") as 文件对象:文件操作代码 示例代码: 读取文件 with open("test.txt", "r", encoding="utf-8") as f:content = f.read()print(content) 离开with代码块后,文件会自动关闭 写入文件 with open("test.txt", "w", encoding="utf-8") as f:f.write("使用with语句写入内容") 6. 文件和目录的常用操作使用os模块可以进行文件和目录的相关操作。import os 判断文件或目录是否存在 print(os.path.exists("test.txt")) # 存在返回True,不存在返回False 判断是否是文件 print(os.path.isfile("test.txt")) 判断是否是目录 print(os.path.isdir("test_dir")) 创建目录 os.mkdir("test_dir") 创建多级目录 os.makedirs("a/b/c") 删除文件 os.remove("test.txt") 删除空目录 os.rmdir("test_dir") 删除多级空目录 os.removedirs("a/b/c") 重命名文件或目录 os.rename("old.txt", "new.txt") 获取文件大小(字节) print(os.path.getsize("new.txt")) 获取当前工作目录 print(os.getcwd()) 列出指定目录下的所有文件和目录 print(os.listdir(".")) 7. 综合实战:学生成绩文件管理系统编写一个程序,将学生成绩保存到文件中,并支持从文件中读取成绩进行统计。def save_scores(scores, filename="scores.txt"):"""保存成绩到文件"""with open(filename, "w", encoding="utf-8") as f:for name, score in scores.items():f.write(f"{name},{score}\n") def load_scores(filename="scores.txt"):"""从文件中读取成绩"""scores = {}if not os.path.exists(filename):return scoreswith open(filename, "r", encoding="utf-8") as f:for line in f:line = line.strip()if line:name, score = line.split(",")scores[name] = float(score)return scores def calculate_average(scores):"""计算平均分"""if not scores:return 0return sum(scores.values()) / len(scores) 主程序 import osscores = load_scores() while True:print("\n学生成绩文件管理系统")print("1. 添加成绩")print("2. 查看所有成绩")print("3. 统计平均分")print("4. 保存并退出") choice = input("请输入你的选择:") if choice == "1":name = input("请输入学生姓名:")score = float(input("请输入学生成绩:"))scores[name] = scoreprint("成绩添加成功!")elif choice == "2":if not scores:print("暂无成绩记录")else:print("所有成绩:")for name, score in scores.items():print(f"{name}: {score}")elif choice == "3":average = calculate_average(scores)print(f"平均分:{average:.2f}")elif choice == "4":save_scores(scores)print("成绩已保存,再见!")breakelse:print("输入错误,请重新选择") 8. 本章总结9. 文件操作用于将数据永久保存到磁盘或从磁盘读取数据10. 使用open()函数打开文件,操作完成后必须使用close()关闭文件11. 常用打开模式有r(只读)、w(只写)、a(追加)等12. 读取文件可以使用read()、readline()、readlines()方法13. 写入文件可以使用write()、writelines()方法14. 使用with语句可以自动管理文件的打开和关闭,避免资源泄漏15. 使用os模块可以进行文件和目录的创建、删除、重命名等操作16. 处理中文文件时,一定要指定encoding="utf-8"编码格式17. 课后练习18. 编写程序,将一个文本文件的内容复制到另一个文件中19. 编写程序,统计一个文本文件中包含的行数、单词数和字符数20. 编写程序,将一个列表中的数据写入文件,每行一个元素21. 编写程序,读取一个文本文件,将其中的所有大写字母转换为小写字母后保存回原文件 有任何问题评论区留言,我会一一解答!下一章讲Python的异常处理。