J'Blog

10 课 · 日常

语义检索

基于 Chroma 向量库,与 Workspace 知识库分离。用自然语言描述你想查的内容。 非管理员每人每天可检索 5 次(消耗站点 AI 配额)。

文件操作与格式化输出

原文:文件与格式化 IO

一句话

掌握Python中的字符串格式化技巧和文件读写操作,实现数据的有效处理和持久化。

什么时候翻这页

  1. 需要格式化输出Agent处理结果或日志信息
  2. Agent需要读写配置文件或保存中间结果
  3. 需要结构化地保存或加载Agent的状态数据
  4. 需要处理Agent工具调用中的输入输出格式转换

核心概念

  1. 格式化字符串字面值(f-strings):在字符串前加f或F前缀,通过{expression}嵌入Python表达式
  2. 字符串format()方法:使用{}作为占位符,支持位置参数和关键字参数
  3. 文件操作:使用open()函数打开文件,支持文本模式和二进制模式
  4. 上下文管理器:使用with语句自动管理文件资源
  5. JSON序列化:使用json模块保存和加载结构化数据

怎么做

  1. 使用f-strings格式化字符串
name = "Alice"
age = 30
print(f"My name is {name} and I am {age} years old.")
  1. 使用format()方法格式化字符串
print("Hello, {}. You are {} years old.".format("Bob", 25))
  1. 读写文件
# 写入文件
with open("example.txt", "w", encoding="utf-8") as f:
    f.write("Hello, world!")

# 读取文件
with open("example.txt", "r", encoding="utf-8") as f:
    content = f.read()
    print(content)
  1. 使用JSON保存和加载数据
import json

# 保存数据到JSON文件
data = {"name": "Charlie", "age": 35, "hobbies": ["reading", "hiking"]}
with open("data.json", "w", encoding="utf-8") as f:
    json.dump(data, f)

# 从JSON文件加载数据
with open("data.json", "r", encoding="utf-8") as f:
    loaded_data = json.load(f)
    print(loaded_data)

命令 / API 速查

API描述
f"string {variable}"格式化字符串字面值
"string {}".format(variable)字符串format方法
open(filename, mode, encoding)打开文件
with open(...) as f:使用上下文管理器
f.read()读取文件内容
f.write(string)写入文件
json.dump(data, file)将数据序列化为JSON并写入文件
json.load(file)从JSON文件加载数据

与 Agent 开发的联系

  1. Agent工具输出格式化:使用f-strings和format()方法格式化Agent工具的输出结果,提高可读性
  2. Agent状态持久化:使用JSON保存和加载Agent的状态,实现会话记忆功能
  3. 配置文件处理:Agent可以通过读写配置文件来调整行为参数

初学者易错点

  1. 忘记在文件操作后关闭文件,导致资源泄漏
  2. 在二进制模式下指定encoding参数
  3. 使用错误的模式打开文件(如尝试读取以'w'模式打开的文件)
  4. 在JSON序列化时处理特殊对象(如datetime)时出错
  5. 混淆文本模式和二进制模式的读写操作

相关词条

  • tutorial-exceptions - 异常处理,用于文件操作错误处理
  • tutorial-modules - 模块导入,用于导入json等模块
  • tutorial-classes - 类定义,用于创建自定义数据结构
  • tutorial-datastructures - 数据结构,用于处理复杂的数据格式
  • tutorial-functional - 函数式编程,用于数据处理管道

官方原文:https://docs.python.org/zh-cn/3/tutorial/inputoutput.html