Insert/change data into a file?

Asked

Viewed 72 times

-1

I am developing a program that uses a function(insert) to which adds products and precise quantities that inputs are one at a time in a file.

The part of the quantities would be in a function responsible for inserting.

Note: The change function is incomplete, it would be if the product already existed would be added/removed only the quantity.

Example input for each line:

a = input()
b = input()

Filing cabinet

produto1;9
produto2;10

...

Program

def apresentacao(a):
    ap1 = "="
    print("{} {} {}".format((25*ap1),a,25*ap1))

def inserir(*quem):


    with open("arquivo.txt", "a+") as file:
        for i in quem:

            file.write(i+"\n")

def alterar(a):
    lista = []

    with open("arquivo.txt", "r+") as file:
        linhas = file.readlines()
        file.seek(0)
        while True:
            a = input()
            b = input()
            x = a,b
            lista.append(x)
            for i in x:
                print(i)

def listar():
    arquivo = open("arquivo.txt","r")
    conteudo = arquivo.readlines()
    cont = 0
    for i in conteudo:
        cont += 1
        print("{}. {}".format(cont,i.rstrip()))
    arquivo.close()
    return conteudo

def pesquisar(y):

    arquivo = open("arquivo.txt","r")
    conteudo = arquivo.readlines()
    cont =0

    for x in range(len(conteudo)):

        if conteudo[y-1] == conteudo[cont]:

            print(conteudo[y-1])

            break
        else:
            cont += 1
            print(conteudo[y-1])
            return
    arquivo.close()

def excluir(a):

            with open("arquivo.txt", "r+") as file:
                    linhas = file.readlines()
                    file.seek(0)
                    for i in linhas:
                        if i.rstrip() != linhas[a-1].rstrip():
                            file.write(i)
                    file.truncate()


if __name__ == '__main__':

    while True:
        apresentacao("MERCADO")
        print("Menu:")

        print("1. Inserir Dados")
        print("2. Alterar Dados")
        print("3. Listar Dados")
        print("4. Pesquisar Dados")
        print("5. Excluir Dados")
        print("6. Finalizar")
        num = int(input("Escolha um numero do menu que deseja: "))



        if num == 1:
            apresentacao("INSERIR")
            lista = []
            while True:

                entrada = input("Insira o nome do produto: ")

                if entrada.lower() ==  "sair":
                    print("\n")
                    break
                inserir(entrada)

        elif num == 2:
            apresentacao("ALTERAR")
            listar()

            while True:
                entrada = input("QUal deseja alterar: ")
                if entrada.lower() == "sair":
                    print("\n")
                    break
                alterar(int(entrada))


        elif num == 3:
            apresentacao("LISTAR")
            listar()
        elif num == 4:
            apresentacao("PESQUISAR")
            listar()
            while True:

                entrada = input("Digite o numero ao qual deseja: ")
                if entrada.lower() ==  "sair":
                    print("\n")
                    break
                listar()
                print()
                pesquisar(int(entrada))

        elif num == 5:
            apresentacao("EXCLUIR")
            listar()

            while True:
                entrada = input("Exclua qual: ")
                if entrada.lower() == "sair":
                    print("\n")
                    break
                excluir(int(entrada))
                listar()

        else:
            print("\t\tFinalizado")
            break

1 answer

1


Well, if I understand correctly, you need to type the product, then the quantity of that product and be inserted into the file. In this case, the changes I made were as follows::

        if num == 1:
        apresentacao("INSERIR")
        lista = []
        while True:

            entrada = input("Insira o nome do produto: ")
            if entrada.lower() ==  "sair":
                print("\n")
                break

            valor = input("Digite a quantidade do produto: ")

            entrada += ";"+valor
            inserir(entrada)

And, in its function of alteration, I adjusted it only to change the quantity of the product chosen:

def alterar(value):
value -= 1
with open("arquivo.txt", "r") as file:
    linhas = file.readlines()

with open("arquivo.txt", "w") as file:
    for x in linhas:
        if linhas.index(x) == value:
            teste = ""
            a = input("Digite a nova quantidade: ")
            for x in linhas[value]:
                if x != ";":
                    teste += x
                else:
                    break
            teste += ";"+a
            file.write(teste+'\n')
        else:
            file.write(x)

For that, I followed that answer here. Got a little sick, but it works.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.