Я взял то, что когда-то было классным проектом, и превратил его во что-то более пригодное для работы. Моя программа разработана как система инвентаризации. В настоящее время я гарантировал, что моя программа может экспортировать данные в текстовый файл и импортировать эти данные по запросу, если программа когда-либо закрывается. Я не могу редактировать данные после импорта, пока я сначала не добавлю новые данные в список или не добавлю новые данные в список, а затем импортирую.
Я думаю, что причина, по которой он не работает, заключается в том, что данные, импортированные из списка, еще не имеют логической позиции, пока не будут добавлены новые данные.
class Inventory:
def __init__(self):
self.item = ""
self.amount = 0
self.asset_tag = 0
self.notes = ""
def add_inventory(self):
self.item = input("Enter item: ")
self.amount = int(input("How many? "))
self.asset_tag = int(input("Enter Asset Tag if available. Enter 0 if not tagged. "))
self.notes = input("Please add any additional information: ")
def __str__(self):
return('Item: %s Amount: %d Asset Tag: %d Notes: %s' %
(self.item, self.amount, self.asset_tag, self.notes))
inventory_list = []
def edit(inventory_list):
pos = int(input('Enter the position of the item you would like to edit: '))
new_inventory = item.add_inventory()
new_inventory = item.__str__()
inventory_list[pos-1] = new_inventory
print('Inventory has been updated. If the amount is now 0 please notify.')
while True:
print("""
1. Add new inventory.
2. Remove item from inventory.
3. View inventory.
4. Update current inventory.
5. Export inventory to file.
6. Import Inventory file
7. Quit
""")
ans = input('What would you like to do? ')
if ans == "1":
item = Inventory()
item.add_inventory()
inventory_list.append(item.__str__())
elif ans == "2":
for i in inventory_list:
inventory_list.pop(int(input('Enter position of item to remove: ')))
print('Inventory item removed successfully!')
elif ans == "3":
print('\n'.join(map(str, inventory_list)))
elif ans == "4":
edit(inventory_list)
elif ans == "5":
f = open('Inventory_List.txt', 'w')
for ele in inventory_list:
f.write(ele+'\n')
f.close()
elif ans == "6":
with open('Inventory_List.txt') as f:
data = f.read().splitlines()
print(data)
inventory_list.extend(data)
elif ans == "7":
break
else:
print('Invalid entry, try again.')```