【Python自动化】安全库存阈值不同?库管/小白1个脚本预警
为什么你需要这个脚本管多品类库存有多痛苦在仓库、仓库管理系统中管理货品时出现令库管烦恼的问题是把所有货品的安全库存阈值即剩下多少件就预警且提示该补货/进货设为统一标准导致销量快的货总是缺货、销量慢的货总是积压这样既降低了仓库空间流转、又出现资金的配置严重失衡。因为每个货品的销量不同安全库存阈值就不同。这个脚本能帮你做什么这怎么办呢没事有Python多货品安全库存预警系统解决。库管输入每个货品的商品名、商品当前库存、商品安全库存阈值就能自动提示该货品是否进货/补货了。Python多货品安全库存预警系统能解决因为库管把所有货品安全库存阈值设置为统一的值导致的上述的后果。对于Python小白来说Python多货品安全库存预警系统运用Python函数的默认参数的语法知识可以通过它来达到熟练掌握、灵活运用Python函数的默认参数的目的。多货品安全库存预警脚本源码运行结果运行Python多货品安全库存预警系统时通过输入商品名、商品当前库存、商品安全库存阈值给出是否需要补货/进货的预警。我在雪糕仓库工作有一定的相关工作经验。我通过运行Python多货品安全库存预警系统给雪糕做库存预警。更新多货品安全库存预警表.xlsx在下面几幅图中在多货品安全库存预警表.xlsx在的情况下会更新该.xlsx表里面增加新输入的商品信息、更新改动的商品信息没有改动的商品信息不变。同时展示输入商品名、商品当前库存、商品安全库存阈值的校验功能。下面两幅图是运行前的图片多商品安全库存预警表.xlsx在了。运行前多货品安全库存预警表.xlsx的内容如下图所示。下面几幅图是在运行的图片。运行时更新的多货品安全库存预警表.xlsx的内容如下图所示。创建多货品安全库存预警表.xlsx以下几幅图中在没有多货品安全库存预警表.xlsx的情况下运行python多货品安全库存预警系统时会新创建一个多商品安全库存预警表.xlsx。如下一幅图这是在运行之前。没有多商品安全库存预警表.xlsx。下面几幅图是在运行的图片。在运行之后已经创建了多货品安全库存预警表.xlsx。创建好的多货品安全库存预警表.xlsx的内容如下图所示。退出python多货品安全库存预警系统如下几幅图展示的是python多货品安全库存预警系统的退出功能。代码详解Python多货品安全库存预警脚本的完整源码如下。如果你们看不懂代码那么没事代码里带注释。该脚本的代码的注释中主要讲解了商品名称、商品当前库存、商品安全库存阈值的输入及其校验比较商品当前库存和安全库存并给出是否需要补货/进货的预警把结果保存在excel表中还重点介绍了在哪里以及如何运用Python函数的默认参数的语法知识。如果你不懂Python函数的默认参数的语法知识请阅读下面一篇文章。Python函数默认参数错PyCharm中新手1招根治这些能保证库管和Python新手能看懂。importopenpyxlfromopenpyxl.stylesimportFont,PatternFill,Alignmentimportos# # 全局配置Excel文件名# EXCEL_FILE多商品安全库存预警表.xlsx# # 功能一库存预警判断# ## 【Python 默认参数 知识点】## 写法def 函数名(参数1, 参数2, 参数3默认值):## 规则# · 参数1、参数2 是必填参数调用时必须给值不给就报错# · 参数3默认值 是默认参数调用时可给可不给# - 给了 → 用你给的值# - 没给 → 自动用等号后面的默认值## 本例warn_threshold15# · 大多数商品安全库存都是15不用每次写# · 少数特殊商品比如贵重品可以自定义如传20## 三种合法调用方式# stock_warning(8, 苹果) → 用默认值15# stock_warning(8, 苹果, 20) → 用自定义值20# stock_warning(8, 苹果, warn_threshold25) → 带名字传更清晰# defstock_warning(stock_num,sku,warn_threshold15):判断库存是否需要补货返回是或否ifstock_numwarn_threshold:# 当前库存 安全阈值print(f{sku}库存{stock_num}低于阈值{warn_threshold}该补货了)return是# 返回是表示需要补货else:print(f{sku}库存{stock_num}正常无需补货。)return否# 返回否表示不需要补货# # 功能二获取用户输入带校验# ## 【又是默认参数】must_be_intFalse## 作用一个函数干两件事靠默认参数区分# · 输入商品名时 → get_input(提示文字)# 只校验非空因为商品名可以是汉字、字母# · 输入库存数量时 → get_input(提示文字, must_be_intTrue)# 额外校验必须是整数库存不能是小数或文字## 返回值# · 正常输入 → 返回输入的内容# · 输入 q 或 Q → 返回 None表示用户想退出# defget_input(prompt,must_be_intFalse):获取用户输入校验后返回。输入q/Q返回None表示退出whileTrue:# 无限循环直到输入合法才跳出textinput(prompt).strip()# input()接收键盘输入strip()去掉首尾空格iftext.lower()q:# .lower()把大写Q转成小写q统一判断returnNone# 返回None外层收到None就知道要退出iftext:# 输入全是空格或直接回车print(输入不能为空请重新输入。)continue# 跳过本次循环重新要求输入ifmust_be_int:# 如果调用时传了 must_be_intTruetry:returnint(text)# 尝试把字符串转成整数成功就返回exceptValueError:# 转失败如输入了abc会抛异常被except捕获print(输入错误请输入整数)continue# 重新要求输入returntext# 不需要校验整数直接返回# # 功能三保存到Excel核心中的核心# ## 核心逻辑一句话有则更新无则新增不动别人## 分两种情况# 1. 文件不存在 → 创建新文件画表头写第一条数据# 2. 文件已存在 → 打开文件找这个商品# · 找到了 → 更新那一行的数据其他商品不动# · 没找到 → 在表格最下面新增一行## 参数说明# sku: 商品名称# stock_num: 当前库存数量# warn_threshold: 安全库存阈值# need_replenish: 是或否来自 stock_warning() 的返回值# defsave_to_excel(sku,stock_num,warn_threshold,need_replenish):把商品库存信息写入Excel有则更新无则新增# 表头文字Excel第一行要显示这些列名headers[商品名称,当前库存,安全库存阈值,是否需要补货/进货]# ---------- 情况1Excel文件已存在 ----------ifos.path.exists(EXCEL_FILE):# os.path.exists() 检查文件是否存在wbopenpyxl.load_workbook(EXCEL_FILE)# 加载已有的Excel文件wswb.active# .active 获取当前正在使用的工作表SheetfoundFalse# 标记是否找到这个商品先假设没找到# 遍历已有数据从第2行开始第1行是表头不用看# ws.max_row 是Excel最后一行的行号forrowinrange(2,ws.max_row1):# ws.cell(row行号, column1) 取第1列商品名称列的单元格# .value 取单元格里的文字ifws.cell(rowrow,column1).valuesku:# 找到同名商品更新这一行4个单元格的数据# enumerate([数据列表], 1) 产生 (列号, 值) 的配对从第1列开始forcol,valinenumerate([sku,stock_num,warn_threshold,need_replenish],1):cellws.cell(rowrow,columncol,valueval)# 写入数据cell.alignmentAlignment(horizontalcenter,verticalcenter)# 水平垂直居中foundTrue# 标记为已找到print(f已更新{sku}的库存信息。)break# 找到了就跳出循环后面不用再找了# 循环结束如果 found 还是 False说明遍历完所有行都没找到这个商品ifnotfound:new_rowws.max_row1# 最后一行的下一行就是新增的位置forcol,valinenumerate([sku,stock_num,warn_threshold,need_replenish],1):cellws.cell(rownew_row,columncol,valueval)cell.alignmentAlignment(horizontalcenter,verticalcenter)print(f已新增{sku}的库存信息。)# ---------- 情况2Excel文件不存在从零创建 ----------else:wbopenpyxl.Workbook()# 创建一个全新的Excel工作簿wswb.active# 获取默认的第一张工作表ws.title多商品安全库存预警表# 给这张表起个名字# 画表头第1行灰色背景 黑色粗体 居中forcol,headerinenumerate(headers,1):cellws.cell(row1,columncol,valueheader)# 写入表头数据cell.fontFont(boldTrue,color000000)# 黑色粗体字cell.fillPatternFill(start_colorD3D3D3,end_colorD3D3D3,fill_typesolid)# 浅灰背景cell.alignmentAlignment(horizontalcenter,verticalcenter)# 写第一条数据第2行同样居中forcol,valinenumerate([sku,stock_num,warn_threshold,need_replenish],1):cellws.cell(row2,columncol,valueval)cell.alignmentAlignment(horizontalcenter,verticalcenter)# 设置列宽让表格好看不拥挤# zip() 把两个列表按位置一对一配对A→25, B→16, C→16, D→25forcol_letter,widthinzip([A,B,C,D],[25,16,16,25]):ws.column_dimensions[col_letter].widthwidthprint(f已创建{EXCEL_FILE}并写入{sku}的信息。)# 不管上面走的是更新还是新增还是创建最后都要保存并关闭wb.save(EXCEL_FILE)# 保存到硬盘wb.close()# 关闭文件释放资源# # 程序入口主循环# ## 流程图# 输入商品名 → 输入库存数 → 输入安全阈值回车默认15→ 判断预警 → 保存Excel# ↑___________________________________________________________↓# 循环继续下一件商品# defmain():# 打印欢迎界面globalwarn_threshold# 定义全局变量warn_thresholdprint(**40)print( 多商品安全库存预警系统 )print(**40)print(提示任意环节输入q或Q即可退出)print(**40)whileTrue:# 无限循环一件接一件录入商品print(\n*40)# 打印一条分隔线让界面清晰# 第1步输入商品名称# get_input 只传一个参数must_be_int 用默认值 False只校验非空skuget_input(请输入商品名称 (q或Q退出): )ifskuisNone:# 用户输入了q返回None退出程序print(拜拜)break# break 跳出while循环程序结束# 第2步输入库存数量# 传 must_be_intTrue强制要求输入整数stock_numget_input(请输入库存数量 (q或Q退出): ,must_be_intTrue)ifstock_numisNone:print(拜拜)break# 第3步输入安全库存阈值# 这里直接用 input()因为要支持直接回车使用默认值whileTrue:warn_inputinput(请输入安全阈值 (q或Q退出, 回车默认15): ).strip()ifwarn_input.lower()q:#用户输入为Q或qbreak# 【默认参数思想的实际运用】# 函数里用 warn_threshold15 做默认参数# 这里用户直接回车程序同样用15作为默认值# 两者思想一致大多数情况用这个数特殊情况再改ifwarn_input:# 用户直接回车输入为空字符串warn_threshold15# 使用默认值15print(使用默认阈值: 15)breakelse:try:warn_thresholdint(warn_input)# 用户输入了自定义阈值exceptValueError:# 输入不是整数如abcprint(输入无效请输入整数。)continuebreakifwarn_input.lower()q:print(拜拜)break# 第4步调用预警判断函数# 把用户输入的库存和阈值传进去得到是或否needstock_warning(stock_num,sku,warn_threshold)# 第5步保存到Excel# 把4个信息全部传给 save_to_excel由它决定是更新还是新增save_to_excel(sku,stock_num,warn_threshold,need)print(f已保存excel文件到:{os.path.abspath(EXCEL_FILE)})# # 程序启动开关# # if __name__ __main__: 是Python的固定写法意思是# 只有当直接运行这个文件时才执行 main() 函数# 如果这个文件被别的文件导入main() 不会自动执行# if__name____main__:main()核心功能讲解Python多货品安全库存预警脚本的核心功能用流程图表示。该流程图的内容用两句话来简要概括那就是输入商品 → 输入库存 → 输入安全库存阈值回车默认15→ 判断预警 → 写入Excel有则更新/无则新增/无文件则创建→ 循环继续下一件。并且整个流程里任意一步输入 q 或 Q都会直接打印拜拜并结束程序。该脚本的流程图如下。▶ 【程序启动】└─ 打印欢迎界面└─ 提示输入 q/Q 可随时退出│▼▶ 【主循环】开始录入第 N 件商品│▼▶ ① 输入商品名称├─ 输入 q/Q ───→ 【退出】打印拜拜├─ 输入为空 ─→ 提示输入不能为空请重新输入返回重输└─ 正常输入 ───→ 保存商品名继续│▼▶ ② 输入当前库存数量├─ 输入 q/Q ────→ 【退出】打印拜拜├─ 输入为空 ─→ 提示输入不能为空请重新输入返回重输├─ 输入非整数 ─→ 提示输入错误请输入整数返回重输└─ 正常整数 ────→ 保存库存数继续│▼▶ ③ 输入安全库存阈值├─ 输入 q/Q ─────→ 【退出】打印拜拜├─ 直接回车空输入→ 自动使用默认值 15├─ 输入非整数 ────→ 提示输入错误请输入整数返回重输└─ 正常整数 ─────→ 保存阈值继续│▼▶ ④ 库存预警判断├─ 当前库存 安全阈值│ ├─ 是 → 打印库存不足该补货了│ │ 返回结果 “是”│ └─ 否 → 打印库存正常无需补货│ │ 返回结果 “否”└─ 返回是/否结果│▼▶ ⑤ 写入 Excel 文件├─ 文件已存在│ ├─ 否 → 【创建新文件】│ │ ├─ 新建工作簿 命名工作表│ │ ├─ 第1行画表头灰底黑体居中│ │ │ 【商品名|当前库存|安全库存阈值|是否需要进货/补货】│ │ ├─ 第2行写入第一条数据│ │ └─ 调整列宽│ └─ 是 → 打开文件逐行查找商品名│ ├─ 找到了│ │ ├─ 是 → 更新该行4个单元格│ │ │ 打印已更新│ │ └─ 否 → 表格底部新增一行│ │ 打印已新增│ └─ 所有数据居中显示├─ 保存到硬盘 → 关闭释放资源└─ 打印文件完整路径│▼▶ ⑥ 一件商品处理完毕└─ 回到主循环顶部继续录入下一件商品重复 ①→②→③→④→⑤Python运行环境安装在运行多货品安全库存预警系统的之前需要做的重要的前置准备是安装和使用Pycharm和Python.exe。如果你们对安装和使用Pycharm和Python.exe一窍不通那么请阅读如下两篇文章。安装Pycharm配置python.exe0基础新手一次成功如何使用PyCharm0基础新手必看七大核心功能越用越有意思这个脚本还能用在哪些场景能用多货品安全库存预警系统的场景中除了在仓库里根据多货品的当前库存、安全库存阈值来判断多货品是否进货/补货的场景外还能用在多品类办公用品/耗材领用预警、多品类实验室工具/仪器管理、多品类小卖部食材管理、多品类小型工厂/作坊的原材料/零件管理等等。切换场景使用多货品安全库存预警系统时不用改代码直接运行使用就可以了。复盘总结本文详细讲解了Python多货品安全库存预警系统的运行结果、源码、核心功能解决了库管的统一设置所有货品安全库存阈值产生的问题同时它运用了Python函数的默认参数供Python小白练手使Python小白熟练掌握、灵活运用Python函数的默认参数。对于库管来说读到这块相信你已经赢了遇到统一设置所有货品安全库存阈值产生的问题后没有解决的库管真的挺棒了对于Python小白来说读到这里相信你已经赢了没有学Python函数的默认参数或只学Python函数的默认参数理论而不去练手的Python小白真的挺了不起完整资源文件下载如果你觉得复制粘贴麻烦想更省事那么我这里有完整的Python多货品安全库存预警系统的源码的.py文件其链接如下点击链接下载且在Pycharm中找到该.py文件运行即可。PythonExcel 多商品安全库存预警系统库管库存管理Python 小白入门毕设课设源码专栏下篇剧透在专栏中下一篇文章讲的是用Python函数的语法知识解决库存管理痛点的干货。如果你觉得我写的文章有帮助、有用或者你喜欢读我写的文章请动一动宝贵的金手指进行点赞、收藏、转发加关注你的支持是我继续创作的动力我会感激不尽关注我我会发布更多安装和使用编程软件、Python及其他编程语言的语法知识、突破Python及其他编程语言的语法知识的痛点、Python及其他编程语言实战的干货。如果你在Python语法、库存管理等方面有疑惑、问题或你对我写的文章有疑问那么欢迎你到评论区留言我看到后会一一回复。

相关新闻

TPC-H 成本不到一分钱:ClickHouse Cloud 对比 Snowflake、Databricks、BigQuery 和 Redshift

TPC-H 成本不到一分钱:ClickHouse Cloud 对比 Snowflake、Databricks、BigQuery 和 Redshift

本文字数:5249;估计阅读时间:14分钟作者:Tom Schreiber, Mark Needham, Alexander Gololobov, Andriy Yakovlev and Robert SchulzeTL;DR 在 TPC-H SF100 标准下,单个 59 核 ClickHouse Cloud 节点在实际运行时间方面&…

2026/7/21 23:57:24 阅读更多 →
链表的实现(单链表、双链表、环形表)【上】超详细!!

链表的实现(单链表、双链表、环形表)【上】超详细!!

链表的相关概念链表在逻辑顺序上是连续的,而在物理存储空间上不一定连续,是一种线性的数据结构,由一系列节点组成,每一个节点包含两部分,一个是数据域:存储实际的数据,另一个是指针域&#xff1…

2026/7/21 23:57:24 阅读更多 →
C++测试框架实战指南:Google Test与Catch2核心对比与应用

C++测试框架实战指南:Google Test与Catch2核心对比与应用

1. 项目概述:为什么C开发者需要一个好用的测试框架? 如果你写过C,尤其是写过稍微有点规模的C项目,大概率经历过这种场景:改了一个看似无关紧要的Bug,结果引发了另一个模块的雪崩式崩溃;或者信心…

2026/7/21 23:57:24 阅读更多 →

最新新闻

Unity 2D游戏场景氛围营造:雨夜效果实现与优化

Unity 2D游戏场景氛围营造:雨夜效果实现与优化

最近在整理项目时,发现很多开发者对2D游戏开发中的场景氛围营造感到头疼——特别是如何用简单的技术手段实现复杂的视听体验。今天通过一个具体的2D游戏场景《听夜雨》的开发案例,分享如何用基础技术打造沉浸式环境氛围。这个案例的核心价值在于&#xf…

2026/7/22 1:42:28 阅读更多 →
多Agent协作架构:原理、实践与2026趋势

多Agent协作架构:原理、实践与2026趋势

1. 多Agent协作架构的核心价值2026年的技术生态正在经历一场从单体智能到群体协作的范式转移。单Agent系统在处理复杂任务时面临三大瓶颈:上下文窗口限制、专业领域知识单一、任务分解能力不足。多Agent协作架构通过角色分工和协同机制,实现了11>2的智…

2026/7/22 1:42:28 阅读更多 →
DyberPet:基于PySide6的模块化桌面宠物框架设计与实现

DyberPet:基于PySide6的模块化桌面宠物框架设计与实现

DyberPet:基于PySide6的模块化桌面宠物框架设计与实现 【免费下载链接】DyberPet Desktop Cyber Pet Framework based on PySide6 项目地址: https://gitcode.com/GitHub_Trending/dy/DyberPet DyberPet是一个基于PySide6构建的开源桌面宠物框架,…

2026/7/22 1:42:28 阅读更多 →
英语(一)心理描写-固定搭配—东方仙盟

英语(一)心理描写-固定搭配—东方仙盟

一、情绪心理类短语(15 句)be ashamed ofYou have nothing to be ashamed of. 你没有什么值得羞愧的。He is ashamed of his careless mistakes in the exam. 他为考试里粗心犯下的错误感到惭愧。Don’t be ashamed of asking questions when studying E…

2026/7/22 1:42:28 阅读更多 →
2026最新5款企业AI编程工具选型深度对比实测

2026最新5款企业AI编程工具选型深度对比实测

作为一名在企业做后端开发已经五年的工程师,我最近半年一直在帮团队评估适合企业场景的AI编程工具。毕竟现在大模型时代,AI辅助编码已经不是要不要用的问题,而是选哪款工具既能提升效率又能满足企业的安全合规要求。TRAE是字节跳动出品的国内…

2026/7/22 1:42:28 阅读更多 →
如何利用EPANET开源工具包进行供水管网水力与水质分析

如何利用EPANET开源工具包进行供水管网水力与水质分析

如何利用EPANET开源工具包进行供水管网水力与水质分析 【免费下载链接】EPANET The Water Distribution System Hydraulic and Water Quality Analysis Toolkit 项目地址: https://gitcode.com/gh_mirrors/ep/EPANET 在当今城市水资源管理和管网系统优化中,E…

2026/7/22 1:41:27 阅读更多 →

日新闻

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

1. 项目概述与SYSCFG模块的核心价值在嵌入式系统,尤其是像TI C6000系列这样的高性能DSP开发中,我们常常会与芯片手册里那些密密麻麻的寄存器打交道。很多开发者可能更关注算法实现、内存优化或者外设驱动,但对于一个稳定、高效的系统而言&…

2026/7/22 0:00:26 阅读更多 →
微信Server酱:高到达率的应急通知方案实践

微信Server酱:高到达率的应急通知方案实践

1. 为什么我们需要"最次"的通知方案? 在数字化协作环境中,消息通知系统的重要性不言而喻明。但现实情况是,企业级通知方案往往需要复杂的API对接(如企业微信、钉钉、飞书),个人开发者的小项目又经…

2026/7/22 0:00:26 阅读更多 →
甲方要的“简洁“PPT,到底是简洁还是省事?

甲方要的“简洁“PPT,到底是简洁还是省事?

甲方说"简洁一点",乙方听到的是"少做几页"。甲方说"不要太复杂",乙方理解成"别放图表了"。结果交过去,甲方说"我说的简洁不是这个意思"。"简洁"这个词在PPT语境里,是…

2026/7/22 0:00:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/21 8:48:31 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 5:34:47 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/21 8:25:39 阅读更多 →

月新闻