每次做手工,都要翻箱倒柜找材料?买了重复的毛线、忘了剪刀放哪、不知道某款珠子还有多少颗……今天教你用 Python 写一个「手工材料管家」,再也不用靠记忆管库存!
🤔 你是不是也有这些烦恼?
这些痛点,用一个简单的 Python 脚本就能全部解决。
💡 我们要做什么
用 Python 读写一个 CSV 文件作为材料数据库,实现以下功能:
- 添加材料
- 查询材料
- 消耗材料
- 统计报告
🔧 完整代码
新建一个文件 craft_manager.py,把下面的代码全部复制进去:
import csvimport osfrom datetime import dateFILE = "materials.csv"HEADERS = ["name", "qty", "unit", "price", "date"]def init(): if not os.path.exists(FILE): with open(FILE, "w", newline="", encoding="utf-8") as f: csv.writer(f).writerow(HEADERS) print("Created materials.csv")def load(): with open(FILE, "r", encoding="utf-8") as f: return list(csv.DictReader(f))def save(rows): with open(FILE, "w", newline="", encoding="utf-8") as f: w = csv.DictWriter(f, fieldnames=HEADERS) w.writeheader() w.writerows(rows)def add(name, qty, unit, price): rows = load() rows.append({ "name": name, "qty": qty, "unit": unit, "price": price, "date": str(date.today()) }) save(rows) print(f"Added: {name} x{qty}{unit}")def query(keyword): rows = load() result = [r for r in rows if keyword in r["name"]] if not result: print("No results found.") for r in result: print(f"{r['name']}{r['qty']}{r['unit']} ¥{r['price']}{r['date']}")def use(name, qty): rows = load() for r in rows: if r["name"] == name: r["qty"] = str(float(r["qty"]) - float(qty)) save(rows) print(f"Updated: {name} remaining {r['qty']}") return print("Material not found.")def report(): rows = load() total = sum(float(r["price"]) * float(r["qty"]) for r in rows) low = [r for r in rows if float(r["qty"]) < 5] print(f"\nTotal materials: {len(rows)}") print(f"Total value: ¥{total:.2f}") if low: print("Low stock warning:") for r in low: print(f" {r['name']} only {r['qty']}{r['unit']} left!")# --- 使用示例 ---init()add("粉色毛线", 3, "团", 8.5)add("彩色珠子", 100, "颗", 0.05)add("白色刺绣线", 10, "束", 1.2)query("毛线")use("粉色毛线", 1)report()
📖 代码解读
数据存在哪里?
材料信息存在 materials.csv 文件里。CSV 就是用逗号分隔的表格,Excel、WPS 都能直接打开查看,非常直观。
五个核心函数
- init()
- load() / save()
- add()
- query()
- use()
- report()
运行示例输出
Created materials.csvAdded: 粉色毛线 x3团Added: 彩色珠子 x100颗Added: 白色刺绣线 x10束粉色毛线 3团 ¥8.5 2026-04-16Total materials: 3Total value: ¥22.50
🚀 进阶玩法
1. 按项目管理材料
给 CSV 加一列 project,记录这批材料是用于哪个作品。做完项目后查看哪些材料被消耗了多少,非常清晰。
2. 生成采购清单
每次做新项目前,把所需材料输入脚本,自动对比现有库存,输出「缺少清单」——去买材料时按这个清单来,不多买也不少买。
3. 导出 Excel 报表
安装 openpyxl 库,把 CSV 转成带颜色的 Excel 表格,每月打印一份贴在材料柜上。
✨ 写在最后
很多手工达人觉得编程很难,离自己很远。其实只需要「记录 + 查询 + 统计」这三件事,一个简单的 Python 脚本就能帮你管理好所有创作材料。
从今天开始,让代码帮你记账,你只需要专注创作 🎨
💬 今日互动:你平时怎么管理手工材料的?有没有特别好用的方法?欢迎评论区分享~
— 小趣手作 · 代码与手工的奇妙相遇 —
2026年4月16日