【Python自动化】仓库乱堆盘点崩?库管小白10倍提效

📅 2026/7/22 7:04:40
【Python自动化】仓库乱堆盘点崩?库管小白10倍提效
仓库乱堆盘点崩Python自动分区盘点脚本附源码库管套用新手跟着注释练会关键字参数在仓库库管对货物进行盘点时经常因为仓库货物乱堆没有进行分区所以导致盘点的结果不准系统数量和实际数量相差太大且盘点慢。这怎么办没事Python自动分区盘点脚本附完整源码能实现库管又快又准地盘点能实现系统数量和实际数量相差很小因为该脚本是分区盘点前提是库管把货物重新按分区整理。对于Python新手小白而言Python自动分区盘点脚本附完整源码运用了Python函数的关键字参数的语法知识通过该脚本练手使Python新手小白达到熟练掌握且灵活运用Python函数的关键字参数的语法知识的目的。自动分区盘点脚本源码复制粘贴就能用可直接修改参数核心功能Python自动分区盘点脚本的核心功能如下面的文本型流程图所示。其中文本型流程图从上到下依次执行 ↓表示下一步文本型流程图中的循环录入垛位信息和生成 Excel 报表的├─为依次进行其他地方的├─为并列判断分支。开始↓【主程序启动】↓循环录入垛位信息├─ 输入垛位编号非空验证├─ 输入商品名称非空验证├─ 输入码垛方式非空验证└─ 输入系统数量整数验证↓根据码垛方式补充信息├─ 标准箱 → 录入每层数量、层数、垛数├─ 混码垛 → 循环录入 SKU 明细├─ 散堆 → 无需额外信息├─托盘 → 无需额外信息└─ 其他 → 无需额外信息↓是否继续录入下一个垛位├─ 是 → 返回继续录入└─ 否 → 进入批量盘点↓【批量盘点字典**解包调用函数】↓对每个垛位执行盘点↓【分支根据码垛方式计算实盘数量】├─ 标准箱│ 实盘数量 层数 × 每层数量 × 垛数├─ 混码垛│ 逐项输入各 SKU 数量 → 累加得到实盘数量├─ 散堆│ 手动输入估算数量 → 作为实盘数量├─ 托盘│ ├─ 托盘完好 → 实盘数量 系统数量│ └─ 托盘异常 → 手动输入实盘数量└─ 其他方式手动输入通用实盘数量↓【差异自动计算】差异 实盘数量 − 系统数量├─ 差异 0 → 状态正常└─ 差异 ≠ 0 → 状态异常↓保存盘点结果↓所有垛位盘点完成↓【生成 Excel 报表】├─ 转为 pandas DataFrame└─ 导出为 xlsx 文件↓结束代码详解怎么按照分区、码垛方式自动盘点注释标好了本章Python自动分区盘点脚本运用了Python函数的关键字参数的语法知识。如果你们不懂Python函数的关键字参数的语法知识请阅读如下一篇文章。Python函数默认参数错PyCharm中新手1招根治如果你们看不懂该脚本的代码那么你们可以看注释。因为该脚本的代码的注释具体说明了如何按照分区、码垛方式自动盘点具体说明了Python关键字参数语法知识具体说明了如何进行input输入验证。该脚本代码如下。importpandasaspd#引入pandas库 ═══════════════════════════════════════════════════════════ 按垛分区盘点系统 ═══════════════════════════════════════════════════════════ 【核心功能】 1. 按垛分区盘点支持标准箱、混码垛、散堆、托盘4种码垛方式 2. 智能策略切换不同码垛方式自动匹配清点逻辑 - 标准箱数层反推层数×每层数量×垛数 - 混码垛拆垛逐项一种一种拆开数 - 散堆估算直接输入大概数量 - 托盘整托确认完好直接抄系统数异常重新数 3. 差异自动计算实盘数量 - 系统数量0为正常其他为异常 4. 报表自动生成盘点结果导出Excel表格 【Python关键字参数】 - 定义def f(参数名默认值)如 def f(垛号, 码垛方式标准箱) - 调用f(参数名值)顺序可打乱如 f(码垛方式散堆, 垛号A-03) - 解包字典前加**自动展开为关键字参数如 f(**{垛号:A-01, 系统数量:100}) - 优势参数含义清晰可选参数省略不传调用灵活可读性高 【input输入验证】 - 非空验证确保用户输入了内容不能为空 - 整数验证确保用户输入的是整数不是文字或小数 - 循环提示输入错误时自动提示重新输入直到输入正确为止 ═══════════════════════════════════════════════════════════ defget_int_input(prompt):获取整数输入循环验证直到输入正确整数验证 循环提示whileTrue:valueinput(prompt).strip()ifvalue:print(输入不能为空请重新输入)continuetry:returnint(value)exceptValueError:print(输入错误请输入整数)defget_not_empty_input(prompt):获取非空输入循环验证直到输入正确非空验证whileTrue:valueinput(prompt).strip()ifvalue!:returnvalueprint(输入不能为空请重新输入)defstack_by_stack_inventory(stack_location,good_name,stacking_method标准箱,system_quantity0,specNone,itemsNone): 盘点单垛。所有参数均为关键字参数带默认值调用时灵活传参。 例如stack_by_stack_inventory(垛号A-01, 系统数量100) 顺序随便写 actual_count0print(f\n{*30})print(f盘点垛号{stack_location}| 商品名称{good_name}| 方式{stacking_method}| 系统数量{system_quantity})ifstacking_method标准箱:# 数层反推不用一箱箱数数有几层、每层几箱、几垛一算就知道qty_per_layerspec[每层数量]number_of_layersspec[层数]stack_per_unitspec[垛数]actual_countnumber_of_layers*qty_per_layer*stack_per_unitprint(f计算{actual_count}{number_of_layers}层×{qty_per_layer}箱×{stack_per_unit}件)elifstacking_method混码垛:# 拆垛逐项混在一起的货要一种一种拆开数print(f混码垛共{len(items)}种SKU逐项录入。)foriteminitems:whileTrue:good_quantityinput(f请输入{item[SKU]}{item[名称]}系统{item[数量]}的数量按Q或q退出)ifgood_quantity.lower()q:breaktry:good_quantityint(good_quantity)actual_countgood_quantitybreak# 输入正确继续下一种SKUexceptValueError:print(输入错误请输入整数)elifstacking_method散堆:# 估算散堆没法精确数直接输入大概数量actual_countget_int_input(f请输入要盘点散堆的数量系统{system_quantity}允许估算)elifstacking_method托盘:# 整托确认托盘没坏就直接用系统数量坏了要重新数whileTrue:damagedinput(f请确认托盘是否完好回车确认完好/输入异常以确认不完好).strip()ifdamaged:actual_countsystem_quantitybreakelifdamaged异常:actual_countget_int_input(实际数量)breakelse:print(请回车确认完好/输入异常以确认不完好。)else:# 其他码垛方式通用处理actual_countget_int_input(f通用模式输入实际数量系统{system_quantity})# 差异自动计算实盘 - 系统0为正常其他为异常differenceactual_count-system_quantity status正常ifdifference0else异常print(f结果实盘{actual_count}| 差异{difference:d}|{status})return{垛号:stack_location,码垛方式:stacking_method,系统数量:system_quantity,实盘数量:actual_count,差异:difference,状态:status}defgenerate_zone_repor(count_result,export_path按垛盘点报表.xlsx): 生成Excel报表。export_path是关键字参数默认保存在当前文件夹。 也可以指定路径generate_zone_repor(result, export_pathD:/盘点/2024.xlsx) dfpd.DataFrame(count_result)df.to_excel(export_path,indexFalse)print(f\n报表已生成{export_path})print(df.to_string(indexFalse))returndfif__name____main__:inventory[]print(\n----------------- 新垛位盘点 --------------------------)whileTrue:# 第一步录入基本信息带输入验证输错会提示重输stack_locationget_not_empty_input(请输入垛位编号如A-01)good_nameget_not_empty_input(请输入要盘点的商品名称如礼拜天原味方糕)stacking_methodget_not_empty_input(请输入堆码方式如标准箱/混码垛/散堆/托盘等)system_quantityget_int_input(请输入系统数量)# 打包成字典后面用 ** 解包成关键字参数传给盘点函数stack{stack_location:stack_location,good_name:good_name,stacking_method:stacking_method,system_quantity:system_quantity}# 第二步根据码垛方式补充录入额外信息ifstacking_method标准箱:per_layerget_int_input(每层数量)layersget_int_input(层数)stacksget_int_input(垛数)stack[spec]{每层数量:per_layer,层数:layers,垛数:stacks}elifstacking_method混码垛:items[]print(--------输入SKU明细输入q或Q结束--------)whileTrue:skuinput(请输入SKU编号输入q或Q结束).strip()ifsku:print(至少输入一条请继续输入)continueifsku.lower()q:breaknameget_not_empty_input(请输入商品SKU名称)quantityget_int_input(请输入该SKU的系统数量)items.append({SKU:sku,名称:name,数量:quantity})stack[items]items inventory.append(stack)# 第三步问是否继续录入下一个垛位continput(是否继续录入下一个垛位按y为是其他为否).strip().lower()ifcont!y:break# 第四步遍历盘点用 **字典 解包为关键字参数传入函数# 比如 stack 里有 {stack_location:A-01, system_quantity:100}# **stack 就等价于 stack_locationA-01, system_quantity100result_list[stack_by_stack_inventory(**stack)forstackininventory]# 第五步生成报表使用默认输出路径关键字参数省略不传generate_zone_repor(result_list)# 扩展自定义路径显式使用关键字参数传参# generate_zone_repor(result_list, export_pathD:/盘点/2024.xlsx)运行结果分区统计库存清单自动生成截图显示目前我在雪糕店的仓库工作拿雪糕为例来给你们展示Python自动分区盘点脚本的运行结果和含有盘点结果的excel表其中该脚本的运行结果包含自动生成的分区统计、库存清单。如下几幅运行结果截图是单独盘一个分区且码垛方式为标准箱的截图。以下是含有单独盘一个分区且码垛方式为标准箱的结果的excel表的截图。如下几幅运行结果截图是单独盘一个分区且码垛方式为混码垛的截图。以下是含有单独盘一个分区且码垛方式为混码垛的结果的excel表的截图。如下一幅运行结果截图是单独盘一个分区且码垛方式为散堆的截图。以下是单独盘一个分区且码垛方式为散堆的结果的excel表的截图。如下一幅运行结果截图是单独盘一个分区且码垛方式为托盘且托盘没有损坏的截图。以下是单独盘一个分区且码垛方式为托盘且托盘没有损坏的结果的excel表的截图。如下一幅运行结果截图是单独盘一个分区且码垛方式为托盘且托盘损坏的截图。以下是单独盘一个分区且码垛方式为托盘且托盘发生损坏的结果的excel表的截图。如下一幅运行结果截图是单独盘一个分区且码垛方式为其他的截图。以下是单独盘一个分区且码垛方式为其他的结果的excel表的截图。如下几幅运行结果截图是盘多个分区且多种码垛方式的截图。以下是盘多个分区且多种码垛方式的结果的excel表的截图。这个脚本如何解决因仓库乱堆而盘点崩的问题3分钟看完输入参数直接跑Python自动分区盘点脚本是怎么解决因仓库乱堆而盘点崩的问题主要是该脚本按照分区降低盘点复杂度、通过输入匹配码垛方式、输入验证、自动盘点减少人工盘点错误、生成excel盘点报表把仓库货物乱堆导致盘点崩的场景变成按照分区一垛一垛地自动盘点的标准流程的场景前提是库管把一堆货物分区放。新手/库管安装Python运行环境环境在运行本章的Python自动分区盘点脚本之前需要库管和Python新手小白安装和使用Pycharm和Python.exe因为这些是运行Python代码脚本的重中之重。如果你们不会安装和使用Pycharm和Python.exe请阅读如下两篇文章。安装Pycharm配置python.exe0基础新手一次成功如何使用PyCharm0基础新手必看七大核心功能越用越有意思扩展延伸这套代码还能用在哪些场景Python自动分区盘点脚本除了用在仓库盘点的场景之外还能用在哪些场景呢该脚本还能用在图书/档案室盘点、超市/便利店盘点、药店/药房盘点、实验室器材盘点、服装店盘点、学校食堂食材盘点等等。复盘总结本章介绍Python自动分区盘点脚本的核心功能、完整源码、运行结果帮助库管解决仓库货物乱堆导致盘点崩溃的问题。本章还说明了该脚本除了用在仓库盘点场景外还能用在其他很多场景。同时本章Python自动分区盘点脚本运用了Python函数的关键字参数的语法知识供Python新手小白拿该脚本练手帮助你们达到熟练掌握并灵活运用Python函数的关键字参数的语法知识的目的。对于库管来说看到这里相信你们已经战胜了遇到仓库乱堆导致盘点崩且没有解决的库管。对于Python新手小白来说读到这里相信你们已经超过了没有学Python函数的关键字参数和只学到Python函数的关键字参数的理论的Python新手小白。完整资源文件下载如果你们想更省事想直接在Pycharm中找Python自动分区盘点脚本源码的.py文件下载并运行那么完整的Python自动分区盘点脚本源码的.py文件的链接如下你们点击下面的链接即可下载然后在Pycharm中找到该脚本的.py文件就能运行。Python仓库盘点系统 课设毕设源码 pandas自动生成Excel报表 含输入验证与关键字参数教学专栏下篇预告在专栏中下一篇文章继续发布用Python函数的语法知识解决库存管理痛点的干货。如果你们觉得我写的这篇文章有用、有帮助或者你们喜欢我写的这篇文章请动一动你们宝贵的手指进行点赞、收藏、转发加关注你们的支持是我继续创作的动力。关注我我会发布更多Python及其他编程语言的语法知识的干货、突破Python及其他编程语言的语法知识的痛点的干货、Python及其他编程语言实战干货、安装和使用编程软件的干货。如果你们在库存管理方面有什么不懂的或者你们在Python语法上有哪些不会的请到评论区留言我看到后会一一回复。如果你们觉得我写的文章有问题也请到评论区留言我看到后会一一回复、一一改正。