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




