《2026 Python零基础入门:用AI主题学编程》第八课:模块与文件操作——保存/读取对话历史(txt/json),让你的AI聊天记录持久化

6 阅读4分钟

大家好,我是链上杯子(掘金:链上杯子)。

失业一年了,天天想着怎么翻身。最近在写提示词工具时发现,每次关掉程序,对话历史就没了。把聊天记录保存到文件里,下次打开还能继续看,甚至还能读取历史来做更长的上下文提示。学会文件读写后,感觉离一个真正能“记住”对话的小工具又近了一步。

本课目标:学会使用 Python 内置模块(import)、文件读写(open、read、write)、以及 json 模块处理结构化数据。通过保存/读取对话历史(txt 和 json 格式),实现提示词和 AI 交互记录的持久化。

核心代码实战

1. 基础文件操作 —— 保存对话到 txt 文件

# 先导入 open 需要的内置功能(其实 open 是内置的,不需要 import)

history = [
    "用户:今天想写什么?",
    "AI:来点治愈系短文吧~",
    "用户:主题:雨天的咖啡馆",
    "AI:好的,生成中..."
]

# 以写模式 'w' 打开文件(不存在会创建,存在会覆盖)
with open("conversation.txt", "w", encoding="utf-8") as f:
    for message in history:
        f.write(message + "\n")   # 每条消息占一行

print("对话已保存到 conversation.txt")

运行后,当前目录会出现 conversation.txt 文件,内容是:

用户:今天想写什么?
AI:来点治愈系短文吧~
用户:主题:雨天的咖啡馆
AI:好的,生成中...

2. 读取 txt 文件 —— 加载历史继续对话

# 以读模式 'r' 打开
with open("conversation.txt", "r", encoding="utf-8") as f:
    saved_history = f.readlines()   # readlines() 返回列表,每行一个元素

# 去掉每行末尾的换行符 \n
saved_history = [line.strip() for line in saved_history]

print("从文件加载的对话历史:")
for msg in saved_history:
    print(msg)

# 可以继续追加新消息
new_message = "用户:再来一篇关于星空的"
saved_history.append(new_message)

# 重新保存(覆盖原文件)
with open("conversation.txt", "w", encoding="utf-8") as f:
    for msg in saved_history:
        f.write(msg + "\n")

print("\n已追加新消息并保存。")

运行后会看到加载的内容,并追加一条新消息。

3. 使用 json 模块 —— 保存结构化对话(推荐方式)

json 模块可以把 Python 列表/字典存成标准 json 文件,读取时也能直接转回列表/字典。

import json   # 需要 import json 模块

# 更结构化的历史:列表里放字典
structured_history = [
    {"role": "user", "content": "今天心情一般,想听故事"},
    {"role": "assistant", "content": "来一段温暖的冬日小故事?"},
    {"role": "user", "content": "主题:雪地里的小屋"},
    {"role": "assistant", "content": "雪花轻轻落在屋顶..."}
]

# 保存到 json 文件
with open("history.json", "w", encoding="utf-8") as f:
    json.dump(structured_history, f, ensure_ascii=False, indent=2)
    # indent=2 让文件可读性更好,ensure_ascii=False 防止中文乱码

print("结构化对话已保存到 history.json")

# 读取回来
with open("history.json", "r", encoding="utf-8") as f:
    loaded_history = json.load(f)

print("\n从 json 加载的对话:")
for msg in loaded_history:
    print(f"{msg['role']}{msg['content']}")

运行后,history.json 文件内容类似:

[
  {
    "role": "user",
    "content": "今天心情一般,想听故事"
  },
  {
    "role": "assistant",
    "content": "来一段温暖的冬日小故事?"
  },
  ...
]

加载回来后,可以直接用于后续生成更长的上下文提示词。

小练习(2 道)

练习1(基础)
写一段代码:

  • 定义一个列表,里面放 4–6 条你自己生成的提示词(字符串)。
  • 用 with open 保存到 "my_prompts.txt" 文件,每条占一行。
  • 然后再读取回来,打印所有内容。

练习2(进阶)
用 json 方式:

  • 定义一个列表,里面放 4–5 个字典(每个字典有 "role" 和 "content" 键)。
  • 保存到 "chat_history.json"。
  • 读取回来后,遍历打印每条消息的 role 和 content。
  • 再追加一条新消息(比如 {"role": "user", "content": "继续写"}),重新保存文件。
    建议打开生成的 json 文件看看内容是否正确。

本课小结

本课介绍了 import 模块(json)、文件读写(open/with/read/write/readlines)、json.dump/load 保存/读取结构化数据。
在 AI 场景中,文件操作让对话历史可以持久化,下次打开程序还能“接上”之前的上下文,离完整的小 AI 工具又近一步。

下节预告

下一课:调用免费 LLM API(入门)—— 用 requests 模块调用免费大模型 API,实现真正的 AI 交互。

欢迎在评论区贴出练习代码或生成的提示词,有问题可以留言。