Comment exporter / importer des données de mon programme d'inventaire?


PaulAllen20002

J'ai un programme d'inventaire. Les données sont entrées dans deux listes puis ajoutées à une liste appelée inventaire. Je n'ai jamais créé un programme qui enregistre une sortie de données à utiliser / éditer ultérieurement. Voici ce que j'ai:

Programme intitulé: Clean copy.py

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()

Ensuite, j'ai créé un document TextEdit vierge intitulé Inventaire.

Enfin, j'ai réalisé un autre projet python intitulé: Controller.py

Code:

import socket, os

os.system('cls')

file = open('Clean copy.txt', 'r')

inventory_list = []


for x in file.readlines():
    inventory_list.append(x.rstrip())

report = open('Inventory', 'a')

for y in item_list:
    report.write("-" * 45 + '/n')
    report.write(y + '\t->\t' + socket.gethostbyname(y))

report.close()

Donc, pour récapituler, j'essaie de prendre les données qui sont entrées dans ce programme (Clean copy.py) et de les enregistrer dans un document (Inventory) afin qu'elles puissent être chargées / lues / modifiées ultérieurement.

S'il vous plaît aider Je n'ai jamais enregistré de données qui ont été saisies. La dernière fois que j'ai posé une question à ce sujet, j'ai reçu beaucoup de notes négatives et je n'ai obtenu aucune aide. Merci d'avance.

Chavez

Vous pouvez utiliser pickle, un outil de sérialisation qui peut sérialiser les données dans un fichier d'octets. https://docs.python.org/3/library/pickle.html#:~:text=%E2%80%9CPickling%E2%80%9D%20is%20the%20process%20whereby,back%20into%20an% 20objet% 20hierarchy .

Pour enregistrer un fichier, vous pouvez le décaper. Pour décoder un fichier afin de l'utiliser, vous pouvez le décocher.

Articles connexes


exporter et importer des conteneurs de données docker

KIC Je suis nouveau dans docker et j'ai un problème lorsqu'il s'agit d'expédier des conteneurs de données. Ok, généralement nous expédions des images et les utilisateurs peuvent commencer comme le peuvent les conteneurs de cette image à leur guise, non? Mainte