1. 数据的“保质期”:临时变量 vs 持久存储 🕒
内容详解:
之前写代码,数据存在变量里(比如 name = "张三"),但程序一关,数据就没了——这是“临时存储”。如果想让数据 长期保存 (比如 Web 应用的日志、用户提交的信息),得存在 文件 里(这是“持久存储”)。
类比:临时变量像“写在草稿纸上的笔记”,一揉就没;文件存储像“写在笔记本里的内容”,能长期保存~
2. 文件操作入门:打开、读写、关闭——像用“电子笔记本”✍️
关键字:文件打开、读写模式、close()
内容详解:
Python 操作文件分三步:打开→读写→关闭,比如写一个“记录日志”的功能:
# 1. 打开文件:模式 "w"(写),如果文件不存在会新建
file = open("log.txt", "w", encoding="utf-8")
# 2. 写内容到文件
file.write("2025-11-09 有人访问了网站!\n")
# 3. 关闭文件(必须关,否则数据可能没存上)file.close()
读文件也很简单:
# 打开文件:模式 "r"(读)file = open("log.txt", "r", encoding="utf-8")
# 读所有内容
content = file.read()
print("文件内容:", content)
file.close()
常用模式:"w"(覆盖写)、"a"(追加写)、"r"(读)——选对模式才不会丢数据!
3. 进阶:with 语句——不用手动关文件的“懒人技巧”🛌
关键字:with 语句、上下文管理器
内容详解:
手动 close() 容易忘(比如程序崩溃没关文件),用 with 语句 能“自动关闭文件”,更安全优雅:
# with 会自动管理文件:代码块结束后自动 close()
with open("log.txt", "a", encoding="utf-8") as file:
file.write("2025-11-09 又有人访问了网站!\n")
# 不用写 close(),超方便!
这是 Python 的“上下文管理器”功能——帮你自动处理“资源打开 / 关闭”的琐事,新手一定要用它!
4. 实战:给 Web 应用加“日志功能”——记录用户行为 📝
关键字:Web 日志、文件追加写、数据格式化
内容详解:
结合第 5 章的 Flask Web 应用,给它加“日志功能”——记录用户的访问时间、IP、操作:
from flask import Flask, request
import datetime # 导入时间模块
app = Flask(__name__)
# 访问首页时,记录日志
@app.route("/")
def home():
# 获取当前时间
now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# 获取用户 IP
user_ip = request.remote_addr
# 日志内容
log_content = f"{now} - IP:{user_ip} - 访问了首页 \n"
# 追加写日志到文件
with open("web_log.txt", "a", encoding="utf-8") as f:
f.write(log_content)
return "首页(已记录日志)"
if __name__ == "__main__":
app.run(debug=True)
每次有人访问首页,web_log.txt里就会多一条记录——比如:2025-11-09 15:30:00 - IP:127.0.0.1 - 访问了首页。
5. 数据展示:日志变网页——用 Jinja2 渲染可读内容 🎨
关键字:Jinja2 模板、数据渲染、HTML 格式化
内容详解:
日志存在文件里是“纯文本”,不好看,用 Flask 的 Jinja2 模板把它变成“好看的网页”:
- 第一步:写“查看日志”的视图函数
@app.route("/show_log") def show_log(): # 读取日志文件内容 with open("web_log.txt", "r", encoding="utf-8") as f: # 按行分割成列表 logs = f.readlines() # 把日志列表传给模板 return render_template("log_page.html", logs=logs) - 第二步:写模板
templates/log_page.html<!DOCTYPE html> <html> <body> <h1>Web 应用访问日志 </h1> <ul> {% for log in logs %} <li>{{log}}</li> {% endfor %} </ul> </body> </html>
现在访问http://127.0.0.1:5000/show_log,就能看到“带格式的日志列表”——数据不仅能存,还能“好看地展示”!
6. 划重点:文件存储的“坑”与进阶方向 🚧
关键字:文件存储局限、数据库
内容详解:
文件存储适合“简单、小规模数据”,但有局限:
- ❌ 数据多了,读写速度慢;
- ❌ 没法快速“查询”(比如找“某 IP 的所有访问记录”,得逐行读文件);
- ❌ 并发读写容易出错(多个用户同时写文件,可能丢数据)。
所以复杂应用要用到 数据库(比如 MySQL、SQLite)——这是“更专业的持久存储工具”,能解决文件存储的这些问题~
要不要我帮你整理一份 文件操作 +Web 日志功能的核心代码清单?