danielRodrigues Postado Janeiro 13, 2015 Denunciar Share Postado Janeiro 13, 2015 def atualizaCliente(): nomeClienteConsulta = input("Entre com o nome para fazermos fazer a busca :") arquivo = open("dados.txt").readlines() controler = -1 arquivo = [str(x).rstrip() for x in arquivo] controler +=1 for linha in arquivo: if nomeClienteConsulta.title() in linha: lista = linha lista = lista.split(',') print("Cliente encontrado") print("Deseja atualizar qual dado :") opcao = int(input("1) Nome.\n2) Idade.\n3) Endereco.\n4) Todos os dados.\n")) if (opcao == 1): newNome = input("Entre com o novo nome :") newLista = linha.replace(lista[0], newNome.title()) print(newLista) lista = str(newLista) dado = str(lista) arquivo = open("dados.txt","a") arquivo.write(dado + '\n') Pessoal o Código acima realiza uma consulta e atualiza porem quando adiciona os dados novamente os dados estão em forma de uma string só e não uma lista alguém pode me Ajudar ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ArteEN Postado Janeiro 13, 2015 Denunciar Share Postado Janeiro 13, 2015 ola daniel tenho uma sugestão for linha in arquivo: if nomeClienteConsulta.title() in linha: lista = linha.split(',') print("Cliente encontrado") print("Deseja atualizar qual dado :") opcao = int(input("1) Nome.\n2) Idade.\n3) Endereco.\n4) Todos os dados.\n")) if (opcao == 1): newNome = input("Entre com o novo nome :") lista.pop(0) lista.insert(0, newNome) print(lista) arquivo = open("dados.txt","a") arquivo.write(lista + '\n') Eu não reconstruí o script para testar esta sugestão, agora cabe a você fazer isso Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 danielRodrigues Postado Janeiro 14, 2015 Autor Denunciar Share Postado Janeiro 14, 2015 (editado) ArteEN Obrigado por me dar um FeedBack, Porem ele não esta substituindo o antigo Dado. No arquivo fica assim Antes - ['Daniel Rodrigues da Silva', '18', 'Newton Atheniel'] depois - ['daniel Rodrigues da Silva', '18', 'Newton Atheniel']['Maria Rodrigues', ' 18', ' Newton Atheniel'] Editado Janeiro 14, 2015 por danielRodrigues Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ArteEN Postado Janeiro 14, 2015 Denunciar Share Postado Janeiro 14, 2015 (editado) ola daniel primeiro deixa eu me corrigir, é que da para melhorar minha sugestão esta parte: lista.pop(0) lista.insert(0, newNome) da para ser assim: lista[0] = newNome ----- Agora o motivo de não substituir o dado vem do 'a' usado na abertura do arquivo: arquivo = open("dados.txt","a") Este 'a' serve para adicionar uma escrita no final do arquivo, ele não serve para escrever por cima o que pode ser feito é substituir a linha antiga no: arquivo = open("dados.txt").readlines() Para isso você tem que saber o index da linha que sera atualizada e substituir pela nova linha. E escrever o arquivo inteiro usando: arquivo_atualizado = open("dados.txt","w") arquivo_atualizado.write(arquivo) Editado Janeiro 14, 2015 por ArteEN Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 danielRodrigues Postado Janeiro 14, 2015 Autor Denunciar Share Postado Janeiro 14, 2015 Deixa eu ver se entendi: def atualizaCliente(): nomeClienteConsulta = input("Entre com o nome para fazermos fazer a busca :") arquivo = open("dados.txt").readline() # irei excluir esta linha de código # e colocar : #arquivo_atualizado = open("dados.txt","w") #arquivo_atualizado.write(arquivo) arquivo = [str(x).rstrip() for x in arquivo] for linha in arquivo: if nomeClienteConsulta.title() in linha: lista = linha.split(',') print("Cliente encontrado") print("Deseja atualizar qual dado :") opcao = int(input("1) Nome.\n2) Idade.\n3) Endereco.\n4) Todos os dados.\n")) if (opcao == 1): newNome = input("Entre com o novo nome :") lista[0] = newNome print(lista) arquivo = open("dados.txt","a") arquivo.write(arquivo) isso ou não ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ArteEN Postado Janeiro 15, 2015 Denunciar Share Postado Janeiro 15, 2015 Ola daniel O primeiro open() é para pegar os dados no banco de dados. A mudança é no open() que ira reescrever o banco de dados, nesse caso é o open() que esta dentro do if opcao ==1 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
danielRodrigues
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.