You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python CSV特定单元格修改:自动售货机库存更新实现

Python自动售货机:修改CSV库存的实现方案

嘿,刚好之前帮同学捋过类似的作业思路,给你分享个简单靠谱的实现方式!

首先得明确:CSV是纯文本文件,没法直接定位某一行修改内容——咱得先把所有内容读到内存里,找到目标行改完,再整体写回文件。对于售货机这种小型库存来说,这种方法完全够用,也符合作业的常规要求。

具体步骤&代码示例

咱用Python自带的csv模块来实现,不用装第三方库,老师肯定认可:

1. 先明确你的CSV格式

假设你的库存文件(比如叫inventory.csv)是这样的:

Item no.,Name,Stock
1,Cola,5
2,Chips,10
3,Candy,3

2. 完整实现代码

import csv

def update_stock(item_no, new_stock):
    # 1. 把所有行读到内存里,保留表头
    rows = []
    with open('inventory.csv', 'r') as file:
        reader = csv.reader(file)
        header = next(reader)
        rows.append(header)
        
        # 遍历每一行,找到目标商品编号对应的行
        for row in reader:
            # 注意:CSV里的内容是字符串,要转成一致的格式匹配
            if row[0] == str(item_no):
                # 修改库存列(第三列,索引是2)
                row[2] = str(new_stock)
            rows.append(row)
    
    # 2. 把修改后的内容写回CSV文件
    with open('inventory.csv', 'w', newline='') as file:
        writer = csv.writer(file)
        writer.writerows(rows)

# 模拟用户选择商品的交互逻辑
if __name__ == "__main__":
    try:
        selected_item = int(input("请输入要修改的商品编号:"))
        new_stock = int(input("请输入新的库存数量:"))
        
        # 可选:加个库存不能为负的校验
        if new_stock < 0:
            print("库存不能为负数哦!")
        else:
            update_stock(selected_item, new_stock)
            print("库存更新成功!")
    except ValueError:
        print("请输入有效的数字编号和库存数!")

额外提醒的小细节

  • 写入文件时一定要加newline=''参数,不然Windows系统下可能会多出空行
  • 如果担心写入失败弄丢原文件,可以先写到临时文件,确认成功后再替换原文件(作业要求严谨的话可以加这个逻辑)
  • 如果是用户购买商品的场景,只需要先读取对应商品的当前库存,减1后再调用update_stock就行,不用手动输入新库存

内容的提问来源于stack exchange,提问作者UnicornsOnLSD

火山引擎 最新活动