Take data from a.txt file and store it in a list

Asked

Viewed 678 times

0

What a function would look like to take this . txt and import in the lists?

This function takes the data from the lists and stores the data in txt.

def guardaTxt(lstModelo, lstCor, lstNumeracao, lstQtd, lstValorUnit):
    file1 = open("sapataria_dados.txt","w")
 
    for x in range(len(lstModelo)):
        file1.write(str(lstModelo[x])+' '+str(lstNumeracao[x])+' '+ \  
                    str(lstQtd[x])+' '+str(lstValorUnit[x])+' '+str(lstCor[x])+'\n')
        
    file1.close()

The list is stored like this:

Traditional 42 20 500 White

Sporty 40 10 200 Blue

Walk 45 25 600 Yellow

Race 39 15 400 Red

1 answer

0


Eduardo, below an example of how the function for reading the TXT could be implemented (leTxt), I tried to maintain the same pattern of the function that you put as an example for writing data to txt.

Your code is with many lists, maybe create a class Shoe leave things more organized.

import os

def guardaTxt(lstModelo, lstCor, lstNumeracao, lstQtd, lstValorUnit):
    file1 = open("sapataria_dados.txt","w")

    for x in range(len(lstModelo)):
        file1.write(str(lstModelo[x]) + ' ' + str(lstNumeracao[x]) + ' ' + str(lstQtd[x]) + ' ' + str(lstValorUnit[x]) + ' ' + str(lstCor[x])+'\n')

    file1.close()

#Função responsável pela leitura dos dados de sapato no arquivo txt, mantendo o mesmo formato da função guardaTxt
def leTxt(lstModelo, lstCor, lstNumeracao, lstQtd, lstValorUnit):
  #Verifica a existência do arquivo antes de abrir
  if os.path.isfile("sapataria_dados.txt"):
    file1 = open("sapataria_dados.txt", "r")

    #Efetua a leitura das linhas do arquivo
    for line in file1.readlines():
      #Quebra a linha lida em uma lista, a cada espaço encontrado é gerado um item na lista
      sapato = line.strip().split(' ')

      lstModelo.append(sapato[0])
      lstNumeracao.append(int(sapato[1]))
      lstQtd.append(int(sapato[2]))
      lstValorUnit.append(float(sapato[3]))
      lstCor.append(sapato[4])

    file1.close()


#Valores que serão gravados no txt
modelos = ["Tradicional", "Esportivo", "Caminhada", "Corrida"]
cores = ["Branco", "Azul", "Amarelo", "Vermelho"]
numeracoes = [42, 40, 45, 39]
quantidades = [20, 10, 25, 15]
valores = [500, 200, 600, 400]

#Chamada da função que grava os valores no txt
guardaTxt(modelos, cores, numeracoes, quantidades, valores)

txtModelos = []
txtCores = []
txtNumeracoes = []
txtValores = []
txtQuantidades = []

#Efetua a leitura do txt no mesmo formato que é feita a gravação
leTxt(txtModelos, txtCores, txtNumeracoes, txtQuantidades, txtValores )

#Exibe os valores que foram lidos do txt
print(txtModelos, txtCores, txtNumeracoes, txtValores, txtQuantidades)
  • Thank you friend, my code is without classes because this code is for the initial lessons of Python.

Browser other questions tagged

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