当前位置:首页>python>用 Python 自动整理手工材料清单

用 Python 自动整理手工材料清单

  • 2026-09-23 12:22:20
用 Python 自动整理手工材料清单

每次做手工,都要翻箱倒柜找材料?买了重复的毛线、忘了剪刀放哪、不知道某款珠子还有多少颗……今天教你用 Python 写一个「手工材料管家」,再也不用靠记忆管库存!


🤔 你是不是也有这些烦恼?

  • 材料种类太多,全靠脑子记
  • 买东西时不知道家里还有没有
  • 某个项目需要哪些材料,全写在纸条上找不到
  • 想知道某类材料总共花了多少钱,算不清楚

这些痛点,用一个简单的 Python 脚本就能全部解决。


💡 我们要做什么

用 Python 读写一个 CSV 文件作为材料数据库,实现以下功能:

  1. 添加材料
    :记录名称、数量、单位、价格、购买日期
  2. 查询材料
    :按名称搜索,看还有多少
  3. 消耗材料
    :做完项目后更新库存数量
  4. 统计报告
    :查看总花费、低库存预警

🔧 完整代码

新建一个文件 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()
    :第一次运行时自动创建 CSV 文件,已有则跳过
  • load() / save()
    :读取和保存数据,所有操作都走这两个函数
  • add()
    :添加新材料,自动记录今天的日期
  • query()
    :关键词搜索,比如输入「毛线」就能找到所有毛线
  • use()
    :每次使用材料后更新库存,数量自动减少
  • report()
    :一键统计总价值 + 低库存预警(少于5个)

运行示例输出

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日

最新文章

随机文章