Python 如何将列表保存到excel电子表格?
我有一个有效的库存计划。我试图保存保存在名为inventory的列表中的数据(项目名称和数量)。因此,它们可以在下一次启动程序并在以后编辑时重复使用 我的库存计划代码:Python 如何将列表保存到excel电子表格?,python,Python,我有一个有效的库存计划。我试图保存保存在名为inventory的列表中的数据(项目名称和数量)。因此,它们可以在下一次启动程序并在以后编辑时重复使用 我的库存计划代码: import os class Inventory: def __init__(self): self.item = [] self.qty = [] def remove(self, name): ix = self.item.index(name)
import os
class Inventory:
def __init__(self):
self.item = []
self.qty = []
def remove(self, name):
ix = self.item.index(name)
self.item.pop(ix)
self.qty.pop(ix)
def add(self, name, qty):
self.item.append(name)
self.qty.append(qty)
def update(self, name, update):
if update >= 0:
self.qty[self.item.index(name)] += update
elif update <= -1:
self.qty[self.item.index(name)] += update
def search(self, name):
pos = self.item.index(name) if name in self.item else -1
if pos >= 0:
return self.item[pos], self.qty[pos]
else:
return None
def __str__(self):
out = ""
zipo = list(zip(self.item, self.qty))
for foobar in zipo:
out += f"Item : {foobar[0]} \nQuantity : {foobar[1]}\n"
out += "----------\n"
return out
def menuDisplay():
"""Display the menu"""
print('=============================')
print('= Inventory Management Menu =')
print('=============================')
print('(1) Add New Item to Inventory')
print('(2) Remove Item from Inventory')
print('(3) Update Inventory')
print('(4) Search Item in Inventory')
print('(5) Print Inventory Report')
print('(99) Quit')
def add_one_item(inventory):
print('Adding Inventory')
print('================')
while True:
try:
new_name = input('Enter the name of the item: ')
assert new_name.isalpha(), "Only letters are allowed!"
new_qty = int(input("Enter the quantity of the item: "))
inventory.add(new_name, new_qty)
break
except Exception as e:
print("Invalid choice! try again! " + str(e))
print()
def remove_one_item(inventory):
print('Removing Inventory')
print('==================')
removing = input('Enter the item name to remove from inventory: ')
inventory.remove(removing)
def ask_exit_or_continue():
return int(input('Enter 98 to continue or 99 to exit: '))
def update_inventory(inventory):
print('Updating Inventory')
print('==================')
item = input('Enter the item to update: ')
update = int(input(
"Enter the updated quantity. Enter 5 for additional or -5 for less: "))
inventory.update(item, update)
def search_inventory(inventory):
print('Searching Inventory')
print('===================')
search = input('Enter the name of the item: ')
result = inventory.search(search)
if result is None:
print("Item not in inventory")
else:
name, qty = result
print('Item: ', name)
print('Quantity: ', qty)
print('----------')
def print_inventory(inventory):
print('Current Inventory')
print('=================')
print(inventory)
def main():
inventory = Inventory()
while True:
try:
menuDisplay()
CHOICE = int(input("Enter choice: "))
if CHOICE in [1, 2, 3, 4, 5]:
if CHOICE == 1:
add_one_item(inventory)
elif CHOICE == 2:
remove_one_item(inventory)
elif CHOICE == 3:
update_inventory(inventory)
elif CHOICE == 4:
search_inventory(inventory)
elif CHOICE == 5:
print_inventory(inventory)
exit_choice = ask_exit_or_continue()
if exit_choice == 99:
exit()
elif CHOICE == 99:
exit()
except Exception as e:
print("Invalid choice! try again!"+str(e))
print()
# If the user pick an invalid choice,
# the program will come to here and
# then loop back.
main()
导入操作系统
类别清单:
定义初始化(自):
self.item=[]
self.qty=[]
def移除(自身,名称):
ix=自身项目索引(名称)
self.item.pop(九)
自身数量pop(九)
def添加(自身、名称、数量):
self.item.append(名称)
自身追加数量(数量)
def更新(自我、姓名、更新):
如果更新>=0:
自身数量[自身物料索引(名称)]+=更新
elif update=0:
退货自备商品[pos],自备数量[pos]
其他:
一无所获
定义(自我):
out=“”
zipo=列表(邮政编码(自项目、自数量))
淄博福巴:
out+=f“项:{foobar[0]}\n项:{foobar[1]}\n”
out+=“------------\n”
返回
def menuDisplay():
“”“显示菜单”“”
打印('========================================')
打印('=库存管理菜单=')
打印('========================================')
打印(‘(1)将新项目添加到库存’)
打印(‘(2)从库存中删除项目’)
打印(‘(3)更新库存’)
打印(‘(4)库存中的搜索项目’)
打印(‘(5)打印库存报告’)
打印(‘(99)退出’)
def添加一个项目(库存):
打印('添加库存')
打印('======================')
尽管如此:
尝试:
new_name=input('输入项的名称:')
断言new_name.isalpha(),“只允许使用字母!”
新建数量=整数(输入(“输入项目数量:”)
库存.添加(新库存名称、新库存数量)
打破
例外情况除外,如e:
打印(“无效选择!重试!”+str(e))
打印()
def移除一个项目(库存):
打印('删除库存')
打印('======================')
删除=输入('输入要从库存中删除的项目名称:')
库存。删除(删除)
def ask_exit_或_continue():
返回int(输入('输入98继续,或输入99退出:'))
def更新_库存(库存):
打印('更新库存')
打印('======================')
项目=输入('输入要更新的项目:')
更新=int(输入(
输入更新的数量。输入5表示增加,输入-5表示减少:)
库存.更新(项目,更新)
def搜索_库存(库存):
打印('搜索库存')
打印('=========================')
搜索=输入('输入项目名称:')
结果=库存。搜索(搜索)
如果结果为无:
打印(“不在库存中的项目”)
其他:
名称,数量=结果
打印('项目:',名称)
打印('数量:',数量)
打印('------------')
def打印库存(库存):
打印('当前库存')
打印('======================')
打印(库存)
def main():
存货=存货()
尽管如此:
尝试:
menuDisplay()
CHOICE=int(输入(“输入选项:”)
如果在[1,2,3,4,5]中选择:
如果选项==1:
添加一个项目(库存)
elif选项==2:
删除一个项目(库存)
elif选项==3:
更新库存(库存)
elif选项==4:
搜索库存(库存)
elif选项==5:
打印库存(库存)
退出选择=询问退出或继续()
如果退出_选项==99:
退出()
elif选项==99:
退出()
例外情况除外,如e:
打印(“无效选择!重试!”+str(e))
打印()
#如果用户选择了无效的选项,
#节目将在这里播出
#然后循环返回。
main()
该程序名为Cleancopy.py,我正在尝试将数据保存到名为Inventory的文本编辑文件或excel文档中
假定导出名为inventory的列表中的名称和数量的代码
我该如何解决这个问题?这是我第一次尝试保存这些数据。谢谢您的时间。保存和检索列表的最快方法是将它们保存到文本文件中,然后使用
eval
读取列表。对于库存,在每次添加或删除项目时更新数据文件。在首次实例化库存对象时加载数据
请尝试此更新:
class Inventory:
def __init__(self):
.....
self.load()
def remove(self, name):
....
self.save()
def add(self, name, qty):
.....
self.save()
def update(self, name, update):
.....
self.save()
.....
def save(self):
with open('inventory.dat','w') as f:
f.write(str(self.item) + '\n' + str(self.qty))
def load(self):
from os import path
if path.exists('inventory.dat'):
with open('inventory.dat','r') as f:
lns = f.readlines()
self.item = eval(lns[0])
self.qty = eval(lns[1])
要获得更多数据,应使用csv文件。保存和检索列表的最快方法是将列表保存到文本文件中,然后使用
eval
读取列表。对于库存,在每次添加或删除项目时更新数据文件。在首次实例化库存对象时加载数据
请尝试此更新:
class Inventory:
def __init__(self):
.....
self.load()
def remove(self, name):
....
self.save()
def add(self, name, qty):
.....
self.save()
def update(self, name, update):
.....
self.save()
.....
def save(self):
with open('inventory.dat','w') as f:
f.write(str(self.item) + '\n' + str(self.qty))
def load(self):
from os import path
if path.exists('inventory.dat'):
with open('inventory.dat','r') as f:
lns = f.readlines()
self.item = eval(lns[0])
self.qty = eval(lns[1])
更多数据,您应该使用csv文件。查看:我是将此添加到程序中还是为此创建新的python文件?查看:我是将此添加到程序中还是为此创建新的python文件?我是将此添加到程序中还是为此创建新的python文件?您是在更新现有程序?我是在将此添加到程序中吗或者我正在为此创建一个新的python文件?您正在更新现有的程序