发布时间:2026/8/27 13:37:43
Python库存盘点系统:while循环自动保存防丢失,新手库管1招搞定(附源码) 阅读提示本文主要面向库管与台账业务人员包含Python语法、安装和使用Pycharm和Python.exe的讲解。如果您没有库存相关业务背景部分业务案例不容易看懂。库管避坑新手必看盘点致命雷退出时忘记保存数据全清零⚠️库管和Python新手在使用自动化盘点脚本盘点商品时常被更紧急的事务打断。情急之下直接退出忘了保存——之前盘好的数据就这样人间蒸发了。等处理完急事回来继续盘点数据发现数据已清零。还得重盘真是怒火中烧心里有一股怒火等待着要窜出来明明已经盘好的数据为什么退出后就没了呢还得重盘真的是太麻烦了总不能保证盘点数据过程中没有突发急事也不能保证每次都能记得先保存。还好我手工AI辅助写出了一个while循环自动化盘点数据脚本。它的特别之处在于退出时的自动化保存功能。Python新手和库管在盘点商品时即使因急事直接退出数据也不会丢。使用此while循环自动化盘点数据脚本这一招自救以防丢失。这能保证Python新手、库管在使用此while循环自动化盘点数据脚本时不用为未能即时保存盘点数据而烦恼大大提升效率。我把详细需求发给AI生成代码再根据实际需求修改。每消灭一个bug就像奥特曼打败小怪兽心里充满成就感。每次有成就感后就迫不及待地往下进行越有成就感越想试形成正向循环直到此脚本没有任何bug为止。新手零压力库管救星while循环退出即保存看完秒懂本章写的脚本要用到while循环语法如果你们不会的话请阅读以下文章。Python新手在PyCharm写while必踩5坑为什么退出自动保存要用 while 循环而不是 for 循环核心区别在于你是否事先知道要重复多少次。用户操作系统时点击多少次按钮、输入多少次数据是无法预先确定的——有人用三分钟就退出有人则用三小时。这种不确定循环次数直到满足某个条件才停止的场景正好对应 while 循环 的工作方式只要条件成立就一直执行条件不满足时才退出。相比之下for 循环更适合已知范围的任务比如处理前 10 个订单、“扫描这 5 箱货物”——在循环开始前就已经知道具体要执行多少次了。新手零踩坑库管省时间搞定Python环境不用复杂操作在复制粘贴修改运行本章的脚本之前需要安装和使用Pycharm和Python.exe。如果你们不会的话请阅读以下两篇文章。安装Pycharm配置python.exe0基础新手一次成功如何使用PyCharm0基础新手必看七大核心功能越用越有意思新手能抄码库管能落地退出自动化保存盘点系统直接复制粘贴修改代码需求拆解新手能看懂、库管能用到刚需功能一目了然开始↓加载 inventory_store_data.json↓读取成功→是→加载历史数据→否→新建空库存↓显示已加载商品数量↓输入操作员姓名↓记录开始时间↓设置库存预警阈值↓用户输入→空→是→默认10→否→尝试转数字↓数字合法→否→重新输入→是→负数→是→重新输入→否→阈值设置成功↓进入【主菜单循环】┌───────────────────────────────────┐│ 主菜单1保存 2查看修改 3盘点 4改阈值 q退出 │└───────────────────────────────────┘↓用户选择├─1→保存数据到文件→返回菜单├─2→显示所有库存│ ↓│ 逐个判断库存阈值→是→标缺货│ →否→标充足│ ↓│ 输入商品名→q→返回菜单│ →存在→输入新数量│ →不存在→提示未找到│ ↓│ 新数量→q→退出│ →数字→否→失败│ →是→负数→是→失败│ →否→更新库存│ ↓│ 再次判断是否低于阈值│ ↓│ 返回菜单├─3→进入盘点循环│ ↓│ 输入商品名→空→重新输│ →q→退出盘点│ →显示当前库存│ ↓│ 判断是否低于阈值→提示充足/缺货│ ↓│ 输入扫描数量→ok→完成当前商品│ →q→退出│ →数字→否→重新输│ →是→0→无变化│ →负数→错误│ →正数→库存 扫描数│ ↓│ 再次判断库存预警│ ↓│ 继续盘点循环├─4→显示当前阈值│ ↓│ 输入新阈值→q→退出│ →数字→否→失败│ →是→负数→失败│ →否→更新阈值│ ↓│ 扫描所有商品→列出缺货清单│ ↓│ 返回菜单└─q→退出循环↓自动保存数据↓计算耗时、总种类、总件数、缺货数量↓生成盘点报告↓列出缺货清单↓结束核心实战自动盘点退出即自动保存新手易上手、库管省人力importjsonfromdatetimeimportdatetimedefload_from_file(filenameinventory_store_data.json):启动时尝试读取上次数据try:withopen(filename,r,encodingutf-8)asf:returnjson.load(f)except:return{}defsave_to_file(store_data,filenameinventory_store_data.json):自动保存数据到文件withopen(filename,w,encodingutf-8)asf:json.dump(store_data,f,ensure_asciiFalse,indent2)print(f库存盘点数据已自动保存至{filename})returnfilename# 主程序print(智能盘点系统(附系统异常时即时保存))# 尝试读取历史数据没有就新建storeload_from_file()print(f已加载历史数据{len(store)}种商品)operatorinput(请输入操作员姓名)# 记录责任人start_timedatetime.now()# 设置库存预警阈值核心功能# 当商品库存低于这个数值时系统会提示需要进货whileTrue:try:threshold_inputinput(请设置库存预警阈值低于此数量将提示进货按回车默认10).strip()# 如果用户直接回车使用默认值10warning_thresholdint(threshold_input)ifthreshold_inputelse10ifwarning_threshold0:print(库存阈值不能为负数!)continuebreakexcept:print(输入错误请输入数字)print(f当前库存预警阈值设置为{warning_threshold}件)print(提示当商品库存低于此数值时系统会标记为【需要进货】)whileTrue:print(\n【主菜单】1-保存 2-查看/修改 3-开始盘点 4-修改库存预警阈值 q或Q-结束)select_commandinput().strip()# ---------------------- 选项1保存 --------------------------------ifselect_command1:save_to_file(store)# ---------------------- 选项2查看/修改商品数量 ---------------------elifselect_command2:# 查看与修改print(\n当前库存信息)forid,(good_name,quantity)inenumerate(sorted(store.items()),1):# 【核心改进】判断是否低于预警阈值给出进货提示print(f{id}.{good_name}:{quantity})ifquantitywarning_threshold:print(【库存不足建议进货】)# 红色警示else:print(【库存充足】)edit_good_store_quantityinput(\n如需修改输入商品名,按q或Q返回).strip()whileTrue:ifedit_good_store_quantity.lower()q:breakifedit_good_store_quantityinstore:new_good_store_quantityinput(f当前为{store[edit_good_store_quantity]}修改为按q或Q退出)ifnew_good_store_quantity.lower()q:breaktry:ifint(new_good_store_quantity)0:print(修改失败商品数量不能为负数。)continuestore[edit_good_store_quantity]int(new_good_store_quantity)print(修改完成。)# 修改后立即提示是否低于阈值ifstore[edit_good_store_quantity]warning_threshold:print(f⚠️注意该商品库存({store[edit_good_store_quantity]})低于预警阈值({warning_threshold})建议进货)breakexcept:print(修改失败商品数量必须是数字)continueelifedit_good_store_quantity!:print(未找到该商品)break# ---------------------- 选项3开始盘点商品 ---------------------elifselect_command3:# 盘点录入流程whileTrue:good_nameinput(输入商品名(按q或Q退出)).strip()ifnotgood_name:print(商品名不能为空!)continueifgood_name.lower()q:break# 显示该商品当前库存如果是第二次盘current_quantitystore.get(good_name,0)print(f该商品{good_name}当前已盘{current_quantity}件)# 盘点时实时提醒是否需要进货ifcurrent_quantitywarning_threshold:print(f警告当前库存({current_quantity})低于预警阈值({warning_threshold})建议立即进货)else:print(f当前库存充足超过预警线{current_quantity-warning_threshold}件)whileTrue:number_strinput(输入扫描数量(ok完成,按q或Q退出)).strip()ifnumber_str.lower()ok:breakifnumber_str.lower()q:break# 数据校验层重点try:numberint(number_str)exceptValueError:print(只能输入整数)continueifnumber0:print(数量无变化。)continueifnumber0:print(输入错误不能为负数)continue# 更新库存old_store_quantitystore.get(good_name,0)store[good_name]old_store_quantitynumberifnumber0:store_action增加print(f商品{good_name}{store_action}{number}件当前商品{good_name}{store[good_name]}件。)# 每次操作后都检查是否低于阈值ifstore[good_name]warning_threshold:print(f 注意库存已低于预警线({warning_threshold})请及时补货)else:remainingstore[good_name]-warning_thresholdprint(f当前库存充足超过预警线{remaining}件)# ---------------------- 选项4修改库存预警阈值 ---------------------elifselect_command4:print(f\n当前预警阈值{warning_threshold}件)whileTrue:try:new_thresholdinput(请输入新的预警阈值按q或Q直接退出).strip()ifnew_threshold.lower()q:breakifnew_threshold:new_valint(new_threshold)ifnew_val0:print(阈值不能为负数)continueelse:warning_thresholdnew_valprint(f预警阈值已更新为{warning_threshold}件)# 立即检查当前库存状态low_stock_items[(name,quantity)forname,quantityinstore.items()ifquantitywarning_threshold]iflow_stock_items:print(f\n⚠️预警以下{len(low_stock_items)}种商品库存不足)forname,quantityinlow_stock_items:print(f{name}:{quantity}件缺货{warning_threshold-quantity}件)else:print(所有商品库存充足)breakexcept:print(输入无效阈值未改变)# -------------------- 按q或Q退出程序 ------------------------------ifselect_command.lower()q:# 退出前强制保存save_to_file(store)break# 生成盘点报告end_timedatetime.now()duration_time(end_time-start_time).seconds//60# 统计低于阈值的商品数量low_stock_countsum(1forquantityinstore.values()ifquantitywarning_threshold)print(*8智能盘点报告*14)print(f操作员{operator})print(f耗时{duration_time}分钟)print(f商品种类{len(store)}种)print(f总件数{sum(store.values())}件)print(f⚠️需进货商品{low_stock_count}种阈值{warning_threshold}件)print(f\n)# 列出需要进货的商品清单iflow_stock_count0:print(\n【进货提醒清单】)forname,quantityinsorted(store.items()):ifquantitywarning_threshold:print(f{name}: 当前{quantity}件需补货{warning_threshold-quantity}件)print()运行结果按q或Q退出运行查看/修改商品库存功能盘点商品库存功能修改商品库存预警阈值功能保存名为inventory_store_data.json商品库存文件功能打开名为inventory_store_data.json商品库存文件截图总结本章将教你用while循环编写一个退出即自动化保存的智能盘点脚本。它能完美解决工作中的尴尬场景盘点中途被紧急事务打断处理完后却忘记保存就直接关掉了程序。无论你是刚学Python的新手还是一线库管人员都可以复制粘贴本章代码根据实际业务需求稍作修改即可使用。如果你能坚持读到这里已经相当了不起——这意味着你已经掌握了防止盘点数据丢失的核心思路向用技术改变工作的目标迈进了一大步。这份脚本就是送给想要靠技术翻身的你们的一份实用礼物。专栏下篇剧透本专栏下篇文章将带来while循环在解决更多库存实战场景的痛点中的妙用敬请期待如果觉得文章有用别忘了动动你们宝贵的手指点赞、收藏、关注也欢迎转发给更多朋友。关注后你会收到更多Python语法技巧、Python实战解决痛点、编程避坑指南及开发工具使用教程。如果你们有任何疑问或想法那么随时欢迎你们在评论区留言讨论资源下载文末提供Python单机版库存管理系统完整脚本下载包含全部功能的可运行源码下载即用。下载后可直接复制粘贴运行根据实际业务需求稍作调整即可投入使用。PythonTkinterSQLite 单机版商品库存管理系统源码

相关新闻

2026/8/27 13:37:43

医疗AC-DC电源选型与设计:从安全标准到EMI实战

开头先说明,AC-DC电源在医疗设备里从来不是一个"能通电就行"的部件。我见过不少硬件团队,项目启动时把注意力全放在主控、算法、传感器信号链上,电源部分直接拿一款工业级的AC-DC模块顶上,理由是"反正输入输出对得…

2026/8/27 13:32:43

从零开始:如何使用 Hugging Face Transformers 进行大模型开发

前言 随着人工智能技术的迅猛发展,机器学习和深度学习逐渐成为各行各业的热门话题。然而,对于许多没有专业背景的初学者来说,如何上手这些复杂的技术成了一个难题。幸运的是,Hugging Face Transformers 库的出现,极大地…

2026/8/27 13:32:43

书籍下载 |《掌握Transformer:从零开始构建SOTA模型》

前言 基于Transformer的语言模型已经在自然语言处理(NLP)研究中占据主导地位,现已成为一种新的范式。通过本书,您将学习如何使用Python Transformers库构建各种基于Transformer的NLP应用程序。学习内容包括: 使用Trans…

2026/8/27 16:58:49

开源项目维护与社区运营要点

开源项目维护与社区运营要点 开源项目维护的核心是降低协作成本。贡献者需要知道项目接受什么问题、如何复现、谁会处理,以及何时可能得到答复。 让入口清楚 问题模板分别收集缺陷复现、功能建议和安全报告,避免敏感信息进入公开讨论。提交请求说明变更…

2026/8/27 16:58:49

脚本工具与命令行工程的实践要点

脚本工具与命令行工程的实践要点命令行工具的价值在于可组合和可复现。先定义输入、输出、退出码和副作用,智能辅助才不会把临时脚本变成难以维护的黑箱。 处理参数和配置 参数要区分必填、可选和互斥项;配置说明优先级,解析失败时指出字段位…

2026/8/27 16:58:49

颠覆认知!挖漏洞根本不用精通代码,流程和细节才是王道

很多人觉得 “找漏洞” 是黑客的 “超能力”,需要精通底层代码、掌握 0day 漏洞。但我从零基础到累计挖通 100 漏洞(含 23 个高危)的经历证明:找漏洞的核心不是 “技术有多牛”,而是 “流程有多顺、细节有多细”。这篇…

2026/8/26 9:13:28

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/27 10:58:22

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/27 7:46:21

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/27 0:01:16

Go语言构建企业级AI服务网关:统一管理英伟达等AI接口调用

1. 项目概述:从零构建一个企业级的AI服务网关 最近在帮一个做内容审核的团队做技术架构升级,他们原来的业务里,每天有几十万张图片和短视频需要过审,最初是接了几个开源的AI模型自己部署,但效果和性能一直不太稳定。后…

2026/8/27 0:01:16

LeetCode Hot100(51-60)算法精解与面试技巧

1. 题目背景与核心价值"hot100(51-60)"这个标题看起来像是某个编程题库或算法练习集中的一组题目编号。在技术社区中,类似命名通常指向LeetCode、牛客网等平台的热门题目集合。作为刷过300题的算法老手,我理解这类题目的核心价值在于&#xff…

2026/8/27 0:01:16

CRC校验实战:从模2除法到HJ212协议排错

1. 为什么一个“校验码”能扛住工业现场90%的数据 corruption? 你有没有遇到过这样的场景:嵌入式设备通过RS-485上传温湿度数据,上位机偶尔收到一帧乱码——温度显示成-273℃,湿度跳到999%,但串口波形看起来完全正常&a…

2026/8/26 19:34:06

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/26 19:17:08

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/26 19:34:05

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…