本文目录导读:

好,这个问题很实用,Python存储数据的方式非常多,我会从最常见的场景出发,给你梳理一个清晰的分类和案例。
按“数据是否结构化”分类
结构化数据(表格、数据库)
案例1:CSV文件(最通用)
import csv
# 存储
data = [
{"name": "张三", "age": 25, "city": "北京"},
{"name": "李四", "age": 30, "city": "上海"}
]
with open("users.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=["name", "age", "city"])
writer.writeheader()
writer.writerows(data)
# 读取
with open("users.csv", "r", encoding="utf-8") as f:
reader = csv.DictReader(f)
for row in reader:
print(row)
案例2:Excel文件(需要 openpyxl 或 pandas)
import pandas as pd
# 存储
df = pd.DataFrame({
"姓名": ["张三", "李四"],
"分数": [85, 92]
})
df.to_excel("成绩.xlsx", index=False)
# 读取
df_read = pd.read_excel("成绩.xlsx")
print(df_read)
案例3:SQLite数据库(轻量级数据库)
import sqlite3
# 连接(不存在会自动创建)
conn = sqlite3.connect("mydb.db")
cursor = conn.cursor()
# 创建表
cursor.execute("""
CREATE TABLE IF NOT EXISTS students (
id INTEGER PRIMARY KEY,
name TEXT,
score REAL
)
""")
# 插入数据
cursor.execute("INSERT INTO students (name, score) VALUES (?, ?)",
("王五", 88.5))
conn.commit()
# 查询
cursor.execute("SELECT * FROM students")
print(cursor.fetchall())
conn.close()
半结构化数据(JSON、XML)
案例4:JSON(最常用,适合web/API场景)
import json
# 数据(可以是字典、列表)
data = {
"project": "数据分析",
"version": 1.0,
"results": [
{"id": 1, "value": 0.95},
{"id": 2, "value": 0.87}
]
}
# 写入文件
with open("data.json", "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=2)
# 读取文件
with open("data.json", "r", encoding="utf-8") as f:
loaded = json.load(f)
print(loaded["project"])
Python对象持久化(保留Python对象状态)
案例5:Pickle(序列化任意Python对象)
import pickle
# 任何Python对象
my_model = {
"weights": [0.5, 0.3],
"bias": 0.1,
"config": {"learning_rate": 0.01}
}
# 存储
with open("model.pkl", "wb") as f:
pickle.dump(my_model, f)
# 读取
with open("model.pkl", "rb") as f:
restored = pickle.load(f)
print(restored["weights"])
高性能/大数据场景
案例6:NumPy数组(机器学习数据)
import numpy as np
# 创建数组
arr = np.array([[1, 2, 3], [4, 5, 6]])
# 存储为.npy格式(速度快,占用小)
np.save("matrix.npy", arr)
# 读取
arr_loaded = np.load("matrix.npy")
print(arr_loaded)
案例7:HDF5(适合大规模科学数据)
import h5py
# 存储
with h5py.File("sensor_data.h5", "w") as f:
f.create_dataset("temperature", data=[22.5, 23.1, 21.8])
f.create_dataset("humidity", data=[60, 65, 58])
# 读取
with h5py.File("sensor_data.h5", "r") as f:
temp = f["temperature"][:]
print(temp)
快速选择指南
| 场景 | 推荐方式 | 原因 |
|---|---|---|
| 简单配置 | JSON/ YAML | 人类可读,结构灵活 |
| 表格数据 < 100MB | CSV / Excel | 通用,Excel可查看 |
| 表格数据 > 100MB | Parquet / HDF5 | 压缩率高,读写快 |
| 需要频繁增删改查 | SQLite | 数据库支持SQL |
| 跨语言/网络传输 | JSON / MessagePack | 标准格式 |
| 保存训练好的模型 | Pickle / Joblib | 保留Python对象 |
| 深度学习数据集 | TFRecord / HDF5 | 框架原生支持 |
一句话记住
- 小数据 → JSON (方便查看)
- 表格数据 → CSV 或 SQLite (简单通用)
- 大数组 → .npy 或 HDF5 (性能好)
- Python对象 → Pickle (灵活但小心安全性)
- 生产环境 → 数据库(MySQL、PostgreSQL)+ 云存储
你是想存储什么类型的数据?我可以给你更具体的推荐和代码示例。