最近更新:Python零基础教程第十课 认识新朋友 模块和包
2025-12-26
最近更新:Python零基础教程第九课:犯错了怎么办?——错误处理
2025-12-26
2025-12-26
2025-12-26
最近更新:Python零基础教程第七课:我的第一个工具箱——函数
2025-12-26
浏览量:21 次 发布时间:2025-12-26 20:05 作者:明扬工控商城 下载docx
最近更新:Python零基础教程第十课 认识新朋友 模块和包
2025-12-26
最近更新:Python零基础教程第九课:犯错了怎么办?——错误处理
2025-12-26
2025-12-26
2025-12-26
最近更新:Python零基础教程第七课:我的第一个工具箱——函数
2025-12-26
欢迎来到第八课。前面我们学会了创建函数,让代码更加模块化和可重用。今天我们要学习一个非常实用的技能:文件操作。学会了文件操作,你的程序就可以读取和保存数据了,就像我们平时用记事本记录东西一样。
想象一下,你写了一个日记本程序,可以记录每天的心情。但是每次关闭程序后,记录的内容就消失了,下次打开又得重新写。这肯定不行!
文件操作可以让程序:
1. 保存数据:把用户输入的内容保存到文件中
2. 读取数据:下次打开程序时读取之前保存的内容
3. 处理数据:可以处理各种格式的文件(文本、CSV等)
创建第一个文本文件
打开IDLE,新建一个文件:
代码部分:
创建和写入第一个文件
打开文件准备写入(如果文件不存在会自动创建)
文件对象 =
open("我的日记.txt",
"w", encoding="utf-8")
写入内容
文件对象.write("2023年10月15日 星期日\n")
文件对象.write("今天天气晴朗,我学习了Python。\n")
文件对象.write("感觉编程很有趣,要继续努力!\n")
关闭文件(非常重要!)
文件对象.close()
print("日记已保存到:我的日记.txt")
运行这个程序,你会在Python文件所在的文件夹里找到一个"我的日记.txt"文件,用记事本打开就能看到内容了。
读取文件内容
代码部分:
读取文件内容
print("开始读取日记内容:")
print("-" * 30)
打开文件准备读取
文件对象 =
open("我的日记.txt",
"r", encoding="utf-8")
读取全部内容
内容 = 文件对象.read()
print(内容)
关闭文件
文件对象.close()
print("-" * 30)
print("日记读取完毕")
打开文件时,需要指定模式,就像开门一样,有只读、只写、读写等模式。
常用文件打开模式
模式 r :只读模式(默认),如果文件不存在会报错
模式 w :写入模式,如果文件存在会清空内容,不存在会创建
模式 a :追加模式,在文件末尾添加内容,不存在会创建
模式 r+ :读写模式,可以读也可以写
模式 b :二进制模式,用于图片、视频等
不同模式的示例
代码部分:
追加模式示例
print("追加新内容到日记:")
使用追加模式打开文件
文件对象 =
open("我的日记.txt",
"a", encoding="utf-8")
文件对象.write("\n")
文件对象.write("2023年10月16日 星期一\n")
文件对象.write("今天继续学习Python,学会了文件操作。\n")
文件对象.close()
print("新内容已追加到日记")
直接使用open()和close()有个问题:如果程序在中间出错,可能无法正常关闭文件。Python提供了一个更好的方式:使用with语句。
使用with语句自动管理文件
代码部分:
使用with语句,更安全
写入文件
with open("我的笔记.txt",
"w", encoding="utf-8") as 文件:
文件.write("Python学习笔记\n")
文件.write("1.
变量:存储数据的容器\n")
文件.write("2.
函数:可重用的代码块\n")
文件.write("3.
列表:有序的数据集合\n")
print("笔记已保存")
读取文件
with open("我的笔记.txt",
"r", encoding="utf-8") as 文件:
内容 = 文件.read()
print("笔记内容:")
print(内容)
使用with语句的好处是:即使程序出错,文件也会自动关闭,不会丢失数据。
根据不同的需求,我们可以用不同的方式读取文件。
逐行读取
代码部分:
逐行读取文件
print("逐行读取日记:")
print("-" * 30)
with open("我的日记.txt",
"r", encoding="utf-8") as 文件:
行号 = 1
for 行 in 文件:
print(f"第{行号}行:{行}",
end="")
行号 += 1
print("-" * 30)
读取所有行到列表
代码部分:
读取所有行到列表
print("将日记内容读取到列表:")
with open("我的日记.txt",
"r", encoding="utf-8") as 文件:
所有行 = 文件.readlines()
print("总共有", len(所有行), "行")
print()
for i, 行 in
enumerate(所有行):
print(f"行{i+1}: {行}",
end="")
读取指定数量的字符
代码部分:
读取指定数量的字符
print("读取前50个字符:")
with open("我的日记.txt",
"r", encoding="utf-8") as 文件:
部分内容 = 文件.read(50)
print(部分内容)
print("...")
在操作文件前,有时需要检查文件是否存在,文件大小等信息。
代码部分:
检查文件状态
import os
文件名 = "我的日记.txt"
检查文件是否存在
if os.path.exists(文件名):
print(f"文件 '{文件名}' 存在")
text
下载
获取文件大小(字节)
文件大小 = os.path.getsize(文件名)
print(f"文件大小:{文件大小} 字节")
print(f"约 {文件大小/1024:.2f} KB")
检查是否是文件
if os.path.isfile(文件名):
print("这是一个文件")
检查是否是文件夹
if not os.path.isdir(文件名):
print("这不是一个文件夹")
else:
print(f"文件 '{文件名}' 不存在")
现在让我们用文件操作知识制作一个实用的日记本程序。
第一步:创建新文件
新建文件,保存为"日记本程序.py"
第二步:基础版日记本
代码部分:
日记本程序 1.0
def 显示菜单():
显示主菜单
print("\n" + "=" * 30)
print(" 个人日记本")
print("=" * 30)
print("1. 写新日记")
print("2. 查看日记")
print("3. 退出程序")
print("=" * 30)
def 写日记():
写新日记
print("\n--- 写新日记 ---")
text
下载
获取当前日期
import datetime
当前时间 = datetime.datetime.now()
日期 = 当前时间.strftime("%Y年%m月%d日 %A")
print(f"日期:{日期}")
内容 = input("请输入日记内容(输入'结束'完成):\n")
拼接完整的日记条目
日记条目 = f"\n{日期}\n"
日记条目 += f"{内容}\n"
日记条目 += "-" * 40
保存到文件
with open("日记本.txt", "a", encoding="utf-8") as 文件:
文件.write(日记条目)
print("日记已保存!")
def
看日记():
查看日记
print("\n--- 我的日记 ---")
text
下载
try:
with open("日记本.txt", "r", encoding="utf-8") as 文件:
内容 = 文件.read()
if 内容:
print(内容)
else:
print("日记本是空的,快去写第一篇日记吧!")
except FileNotFoundError:
print("还没有日记,请先写一篇日记。")
主程序
def 主函数():
while True:
显示菜单()
选择 =
input("请选择操作(1-3):")
text
下载
if 选择 == "1":
写日记()
elif 选择 == "2":
看日记()
elif 选择 == "3":
print("\n谢谢使用日记本程序,再见!")
break
else:
print("无效选择,请重新输入")
启动程序
if name ==
"main":
主函数()
第三步:增强版日记本
代码部分:
日记本程序 2.0
import datetime
import os
def 显示菜单():
显示主菜单
print("\n" + "=" * 40)
print(" 个人日记本 2.0")
print("=" * 40)
print("1. 写新日记")
print("2. 查看所有日记")
print("3. 按日期查找日记")
print("4. 删除日记")
print("5. 查看日记统计")
print("6. 退出程序")
print("=" * 40)
def 写日记():
写新日记
print("\n--- 写新日记 ---")
text
下载
获取当前日期和时间
当前时间 = datetime.datetime.now()
日期 = 当前时间.strftime("%Y年%m月%d日")
星期 = 当前时间.strftime("%A")
具体时间 = 当前时间.strftime("%H:%M:%S")
print(f"日期:{日期} {星期}")
print(f"时间:{具体时间}")
输入标题和内容
标题 = input("请输入日记标题:")
print("请输入日记内容(输入空行结束):")
内容行 = []
while True:
行 = input()
if 行 == "":
break
内容行.append(行)
内容 = "\n".join(内容行)
if not 内容:
print("内容为空,未保存日记")
return
拼接完整的日记条目
日记条目 = f"\n{'='*50}\n"
日记条目 += f"日期:{日期} {星期}\n"
日记条目 += f"时间:{具体时间}\n"
日记条目 += f"标题:{标题}\n"
日记条目 += f"{'='*50}\n"
日记条目 += f"{内容}\n"
日记条目 += f"{'='*50}\n"
保存到文件
with open("日记本.txt", "a", encoding="utf-8") as 文件:
文件.write(日记条目)
print("\n日记已保存!")
def
看日记():
查看所有日记
print("\n--- 所有日记 ---")
text
下载
try:
with open("日记本.txt", "r", encoding="utf-8") as 文件:
内容 = 文件.read()
if 内容.strip():
print(内容)
else:
print("日记本是空的,快去写第一篇日记吧!")
except FileNotFoundError:
print("还没有日记,请先写一篇日记。")
def
找日记():
按日期查找日记
print("\n--- 查找日记 ---")
text
下载
try:
with open("日记本.txt", "r", encoding="utf-8") as 文件:
所有内容 = 文件.read()
if not 所有内容.strip():
print("日记本是空的")
return
按分隔符分割日记
日记列表 = 所有内容.split("=" * 50)
获取查找日期
查找日期 = input("请输入要查找的日期(格式:2023年10月15日):")
print(f"\n查找结果(日期包含'{查找日期}'的日记):")
print("-" * 50)
找到 = False
for 日记 in 日记列表:
if 查找日期 in 日记:
print(日记)
找到 = True
if not 找到:
print(f"没有找到日期为'{查找日期}'的日记")
except FileNotFoundError:
print("还没有日记,请先写一篇日记。")
def
删除日记():
删除日记文件
print("\n--- 删除日记 ---")
print("警告:这将删除所有日记,无法恢复!")
text
下载
确认 = input("确定要删除所有日记吗?(输入'y'确认):")
if 确认.lower() == "y":
if os.path.exists("日记本.txt"):
os.remove("日记本.txt")
print("所有日记已删除")
else:
print("日记文件不存在")
else:
print("取消删除")
def
日记统计():
查看日记统计信息
print("\n--- 日记统计 ---")
text
下载
try:
if not os.path.exists("日记本.txt"):
print("还没有日记")
return
获取文件大小
文件大小 = os.path.getsize("日记本.txt")
print(f"日记文件大小:{文件大小} 字节")
统计日记数量
with open("日记本.txt", "r", encoding="utf-8") as 文件:
内容 = 文件.read()
通过分隔符计数日记数量
日记数量 = 内容.count("=" * 50) // 2
print(f"日记数量:{日记数量} 篇")
统计行数和字数
行数 = 内容.count("\n") + 1
字数 = len(内容.replace("\n", "").replace(" ", ""))
print(f"总行数:{行数} 行")
print(f"总字数:{字数} 字")
except Exception as e:
print(f"统计时出错:{e}")
主程序
def 主函数():
print("欢迎使用个人日记本程序!")
text
下载
while True:
显示菜单()
选择 = input("请选择操作(1-6):")
if 选择 == "1":
写日记()
elif 选择 == "2":
看日记()
elif 选择 == "3":
找日记()
elif 选择 == "4":
删除日记()
elif 选择 == "5":
日记统计()
elif 选择 == "6":
print("\n谢谢使用日记本程序,再见!")
break
else:
print("无效选择,请重新输入")
启动程序
if name ==
"main":
主函数()
CSV文件是常见的数据格式,可以用Excel打开,Python也可以处理。
代码部分:
CSV文件操作示例
创建CSV文件
import csv
写入CSV文件
with open("学生成绩.csv",
"w", newline="", encoding="utf-8") as 文件:
写入器 =
csv.writer(文件)
text
下载
写入标题行
写入器.writerow(["姓名", "语文", "数学", "英语", "总分"])
写入数据行
写入器.writerow(["小明", 85, 90, 88, 263])
写入器.writerow(["小红", 92, 88, 95, 275])
写入器.writerow(["小刚", 78, 85, 80, 243])
print("CSV文件已创建:学生成绩.csv")
读取CSV文件
print("\n读取CSV文件内容:")
print("-" * 30)
with open("学生成绩.csv",
"r", encoding="utf-8") as 文件:
读取器 =
csv.reader(文件)
text
下载
for 行 in 读取器:
print(行)
print("-" * 30)
用字典方式读取CSV(更方便)
print("\n用字典方式读取CSV:")
with open("学生成绩.csv",
"r", encoding="utf-8") as 文件:
字典读取器 =
csv.DictReader(文件)
text
下载
for 行 in 字典读取器:
print(f"姓名:{行['姓名']},语文:{行['语文']},数学:{行['数学']},英语:{行['英语']},总分:{行['总分']}")
错误1:文件路径错误
代码部分:
错误示例
with open("不存在的文件夹/文件.txt",
"r") as 文件:
内容 = 文件.read()
解决方法:先检查路径是否存在
import os
路径 = "不存在的文件夹/文件.txt"
if os.path.exists(路径):
with open(路径,
"r") as 文件:
内容 = 文件.read()
else:
print("文件或路径不存在")
错误2:编码问题
代码部分:
错误示例(中文内容可能乱码)
with open("中文文件.txt",
"r") as 文件:
内容 = 文件.read() 可能显示乱码
正确做法:指定编码
with open("中文文件.txt",
"r", encoding="utf-8") as 文件:
内容 = 文件.read() 正常显示中文
错误3:忘记关闭文件
代码部分:
错误示例(不使用with语句时)
文件 =
open("测试.txt",
"w")
文件.write("测试内容")
忘记写 文件.close() 文件可能没有正确保存
正确做法:总是使用with语句
with open("测试.txt",
"w") as 文件:
文件.write("测试内容")
文件会自动关闭
今天的内容非常实用,我们学会了:
1. 打开和关闭文件:使用open()和close()
2. 文件打开模式:r(读)、w(写)、a(追加)
3. 安全操作文件:使用with语句
4. 不同的读取方式:read()、readline()、readlines()
5. 文件状态检查:检查文件是否存在、文件大小等
6. 实际应用:制作日记本程序
7. CSV文件处理:读写CSV格式数据
将本文的Word文档下载到电脑
推荐度: