Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Juliana B Marques

Como Salvar dados em arquivo em python?

Recommended Posts

Preciso fazer um sistema de cadastro de carros e montadoras em Python. Os dados das montadoras e dos carros devem ser salvos em arquivos diferentes. O problema é que cada arquivo só salva apenas uma posição. Como faço para salvar n valores tanto para carros, quanto para montadoras?

#""__encoding:utf-8__""

import os
import platform


def main():

	bd_veiculos = inicializar_arquivo_veiculos()
	bd_montadoras = inicializar_arquivo_montadoras()
	
	opcao = -1

	while opcao != 0:
		print 'SISTEMA DE CADASTRO DE VEÍCULOS E MONTADORAS'
		opcao = input('1 - VEÍCULOS \n2 - MONTADORAS \n3 - LIMPAR TELA \n0 - SAIR \nOPÇÃO: ')

		if opcao == 1:
			menu_veiculos(bd_veiculos)

		elif opcao == 2:
			menu_montadoras(bd_montadoras)

		elif opcao == 3:
			limpar_tela()

		elif opcao == 0:
			print 'VOCÊ SAIU DA APLICAÇÃO.'

		else:
			print 'OPÇÃO INVÁLIDA! DIGITE OUTRA OPÇÃO.'


def menu_montadoras(bd_montadoras):
	while True:
		print 'CADASTRO DE MONTADORAS'
		opcao = input('1 - ADICIONAR \n2 - LISTAR \n3 - REMOVER \n4 - EDITAR \n5 - LIMPAR TELA \n0 - SAIR \nOPÇÃO: ')
		
		if opcao == 1:
			montadora = adicionar_montadora()
			bd_montadoras.append(montadora)

			print 'MONTADORA CADASTRADA COM SUCESSO!'
						
		elif opcao == 2:
			listar_montadoras(bd_montadoras)
						
		elif opcao == 3:
			remover_montadoras()
								
		elif opcao == 4:
			editar_montadoras()

		elif opcao == 5:
			limpar_tela()		
						
		elif opcao == 0:
			print 'VOCÊ SAIU DA APLICAÇÃO.'
			finalizar_arquivo_montadoras(bd_montadoras)
			break
						
		else:
			print 'OPÇÃO INVÁLIDA! DIGITE OUTRA OPÇÃO.'


def menu_veiculos(bd_veiculos):

	 while True:
	 	print 'CADASTRO DE VEÍCULOS'
		opcao = input('1 - ADICIONAR \n2 - LISTAR \n3 - REMOVER \n4 - EDITAR \n5 - LIMPAR TELA \n0 - SAIR \nOPÇÃO: ')

		if opcao == 1:
			veiculo = adicionar_veiculos()
			bd_veiculos.append(veiculo)
	
			print 'VEÍCULO CADASTRADO COM SUCESSO!'
						
		elif opcao == 2:
			listar_veiculos(bd_veiculos)

		elif opcao == 3:
			remover_veiculos(bd_veiculos)
			
		elif opcao == 4:
			editar_veiculos(bd_veiculos)

		elif opcao == 5:
			limpar_tela()
							
		elif opcao == 0:
			finalizar_arquivo_veiculos(bd_veiculos)
			print 'VOCÊ SAIU DA APLICAÇÃO.'
			break
				
		else:
			print 'OPÇÃO INVÁLIDA! DIGITE OUTRA OPÇÃO.'	



#Funções para Montadoras
def inicializar_arquivo_montadoras():
	arquivo_montadoras = open('montadoras.txt','r')
	linhas = arquivo_montadoras.readlines()
	montadoras = []

	for linha in linhas:
		montadoras.append(eval(linha))
	arquivo_montadoras.close()

	return montadoras

def finalizar_arquivo_montadoras(lista):
	arquivo_de_montadoras = open('montadoras.txt', 'w')
	
	for montadora in lista:
		arquivo_de_montadoras.write(str(montadora) + '\n')
	arquivo_de_montadoras.close()

def adicionar_montadora():
	nome = raw_input('NOME:  ')
	pais = raw_input('PAIS: ')
	montadora = {'nome': nome, 'pais': pais} 
	return montadora

def listar_montadoras(bd_montadoras):
	opcao = input('1 - LISTAR TODOS \n2 - POR NOME \n3 - LISTAR COM QUANTIDADE DE VEÍCULOS \n4 - LIMPAR TELA \nOPÇÃO: ')
	montadoras_cadastradas = len(bd_montadoras)
	#quantidade_veiculos = len(bd_veiculos)

	if opcao == 1:
		id_montadora = -1
		print 'MONTADORAS CADASTRADAS ({})'.format(montadoras_cadastradas)
		print 'ID \tNOME \tPAIS '

		for i in range(len(bd_montadoras)):
			id_montadora += 1
			print '{} \t{} \t{}'.format(id_montadora,bd_montadoras[i]['nome'],bd_montadoras[i]['pais'])

	elif opcao == 2:
		print 'MONTADORAS CADASTRADAS ({})'.format(montadoras_cadastradas)
		for i in range(len(bd_montadoras)):
			print 'NOME'
			print bd_montadoras[i]['nome']

	#elif opcao == 3:	
	#	print 'MONTADORAS CADASTRADAS ({})'.format(montadoras_cadastradas)
	#	print 'NOME \tPAÍS'
	#	for i in range(len(bd_montadoras)):
	#		print '{} \t{} \nQUANTIDADE TOTAL DE VEÍCULOS: {}'.format(bd_montadoras[i]['Nome'],bd_montadoras[i]['Pais'],quantidade_veiculos)#LEMBRETE: QTD VEICULOS

	elif opcao == 4:
		limpar_tela()

	else:
		print 'OPÇÃO INVÁLIDA! DIGITE OUTRA OPÇÃO.'


def remover_montadoras(bd_montadoras):
	listar_montadoras(bd_montadoras)
	print 'ESCOLHA A OPÇÃO 1 PARA LISTAR AS MONTADORAS COM O INDICE PARA REMORÇÃO.'
	posicao = input('INDICE A SER REMOVIDO: ')
	montadora_removida = bd_montadoras.pop(posicao)
	print 'A MONTADORA {} FOI REMOVIDA COM SUCESSO!'.format(montadora_removida['nome'])


def editar_montadoras(bd_montadoras):
	listar_veiculos(bd_montadoras)
	indice = input('INDICE A SER ALTERADO: ')
	bd_montadoras[indice] = adicionar_montadora()
	
	print 'A ALTERAÇÃO FOI REALIZADA COM SUCESSO!'

#Funções para Veiculos

def inicializar_arquivo_veiculos():
	arquivo_veiculos = open('veiculos.txt','r')
	linhas = arquivo_veiculos.readlines()
	veiculos = []

	for linha in linhas:
		veiculos.append(eval(linha))
	arquivo_veiculos.close()

	return veiculos

def finalizar_arquivo_veiculos(lista):
	arquivo_de_veiculos = open('veiculos.txt', 'w')
	
	for veiculo in lista:
		arquivo_de_veiculos.write(str(veiculo) + '\n')
	arquivo_de_veiculos.close()


def adicionar_veiculos():
	nome = raw_input('NOME:  ')
	valor = raw_input('VALOR: ')
	ano = input('ANO DE FABRICAÇÃO: ')
	nome_montadora = raw_input('NOME DA MONTADORA: ')
	veiculo = {'nome': nome, 'valor': valor, 'ano': ano, 'nome_da_montadora' : nome_montadora} 
	return veiculo


def listar_veiculos(bd_veiculos):
	opcao = input('1 - LISTAR TODOS \n2 - POR NOME \n3 - POR MONTADORA \n4 - POR ANO \n5 - POR FAIXA DE PREÇO \n6 - LIMPAR TELA\nOPÇÃO: ')
	veiculos_cadastrados = len(bd_veiculos)
	id_veiculo = -1
	if opcao == 1:
		print 'VEICULOS CADASTRADOS {}'.format(veiculos_cadastrados)
		print 'ID \tNOME \tVALOR \tANO \tNOME DA MONTADORA'

		for i in range(len(bd_veiculos)):
			id_veiculo += 1
			print '{} \t{} \t{} \t{}'.format(id_veiculo,bd_veiculos[i]['nome'],bd_veiculos[i]['valor'],bd_veiculos[i]['ano'],bd_veiculos[i]['nome_da_montadora'])

	elif opcao == 2:
		print 'VEICULOS CADASTRADOS {}'.format(veiculos_cadastrados)
		for i in range(len(bd_veiculos)):
			print bd_veiculos[i]['nome']

	elif opcao == 3:
		print 'VEICULOS CADASTRADOS {}'.format(veiculos_cadastrados)
		for i in range(len(bd_veiculos)):
			print bd_veiculos[i]['nome_da_montadora']

	elif opcao == 4:
		print 'VEICULOS CADASTRADOS {}'.format(veiculos_cadastrados)
		for i in range(len(bd_veiculos)):
			print bd_veiculos[i]['ano']

	elif opcao == 5:
		print 'VEICULOS CADASTRADOS {}'.format(veiculos_cadastrados)
		for i in range(len(bd_veiculos)):
			bd_veiculos[i]['valor']#RESOLVER DEPOIS

	elif opcao == 6:
		limpar_tela()

	else:
		print 'OPÇÃO INVÁLIDA! DIGITE OUTRA OPÇÃO.'

def remover_veiculos(bd_veiculos):
	listar_veiculos(bd_veiculos)
	posicao = input('INDICE A SER REMOVIDO: ')
	veiculo_removido = bd_veiculos.pop(posicao)
	print 'O VEÍCULO {} FOI REMOVIDO COM SUCESSO!'.format(veiculo_removido['nome'])


def editar_veiculos(bd_veiculos):
	listar_veiculos(bd_veiculos)
	indice = input('INDICE A SER ALTERADO: ')
	bd_veiculos[indice] = adicionar_veiculos()
	
	print 'A ALTERAÇÃO FOI REALIZADA COM SUCESSO!'


def limpar_tela():
	so = platform.system()

	if so == 'Windows':
		os.system('cls')

	elif so == 'Linux' or so == 'Darwin':
		os.system('clear')


if __name__ == '__main__':
	main()

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por LuizH.M
      from urllib.request import urlopen   response = urlopen("http://vimeo.com/api/v2/video/57733101.json").read().decode('utf8') dados = json.loads(response)[0] print(dados)   print('Titulo: ',dados['title']) print('URL: ',dados['url']) print('Duração',dados['duration'])     a parte do json fala que não está definida   me ajudem pls    estou usando o visual studio
       
    • Por Marcosvn
      Quero desenvolver um site semelhante a esse: https://www.catalogosofertas.com.br/ 
       
      No qual eles enviam diversas ofertas e encartes recentes de lojas em geral e supermercados. Eles possuem muito conteúdo que são atualizados frequentemente, no entanto, muitos dos supermercados, por exemplo, não possuem os folhetos de cada cidade em seus sites. De modo que pudesse criar um scraper pra ficar acompanhando as atualizações. 
       
      Ao mesmo tempo não imagino que eles tenha muitos funcionários fazendo isso, pois são muitas lojas e supermercados que o encarte vence em alguns dias. Oq me faz pensar que manualmente é inviável manter as atualizações.
       
      Queria saber de vocês, que tem experiência com a área ou mesmo que já tenham trabalhado em projetos semelhantes, como posso me organizar para fazer isso acontecer assim como no site de exemplo: https://www.catalogosofertas.com.br/ 
       
      Como posso fazer isso ? Realmente teria q ficar criando diversos scraper e códigos pra ficar acompanhando os encartes de cada loja e supermercado?
       
      Qual dica, sugestão , orientação poderá me ser muito útil, pois estou confuso sobre como fazer isso acontecer.
    • Por Bruno Soares Slva
      Boa tarde pessoal,
      Estou com problemas para criar um robô. O mesmo esta dando na linha em negrito. Segue abaixo o erro que está aparecendo. Alguma informação. Estou usando o VSCode versão: 1.73.0, Python versão 3.8.0, chromedriver versão 18 (antepenúltima). Segue código e erro abaixo:
       
      Erro mostrado: 
       
      Windows PowerShell
      Copyright (C) Microsoft Corporation. Todos os direitos reservados.        
      Experimente a nova plataforma cruzada PowerShell https://aka.ms/pscore6   
      PS C:\Users\soare\Documents\Estudos\Python\projectCourse>  & 'C:\Users\soare\AppData\Local\Programs\Python\Python38\python.exe' 'c:\Users\soare\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\adapter/../..\debugpy\launcher' '52080' '--' 'c:\Users\soare\Documents\Estudos\Python\projectCourse\projeto1\roboweb1.py'
      Traceback (most recent call last):
        File "C:\Users\soare\AppData\Local\Programs\Python\Python38\lib\runpy.py", line 192, in _run_module_as_main
          return _run_code(code, main_globals, None,
        File "C:\Users\soare\AppData\Local\Programs\Python\Python38\lib\runpy.py", line 85, in _run_code
          exec(code, run_globals)
        File "c:\Users\soare\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\adapter/../..\debugpy\launcher/../..\debugpy\__main__.py", line 39, in <module>
          cli.main()
        File "c:\Users\soare\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\adapter/../..\debugpy\launcher/../..\debugpy/..\debugpy\server\cli.py", line 430, in main
          run()
        File "c:\Users\soare\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\adapter/../..\debugpy\launcher/../..\debugpy/..\debugpy\server\cli.py", line 284, in run_file
          runpy.run_path(target, run_name="__main__")
      PS C:\Users\soare\Documents\Estudos\Python\projectCourse>  c:; cd 'c:\Users\soare\Documents\Estudos\Python\projectCourse'; & 'C:\Users\soare\AppData\Local\Programs\Python\Python38\python.exe' 'c:\Users\soare\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\adapter/../..\debugpy\launcher' '52168' '--' 'c:\Users\soare\Documents\Estudos\Python\projectCourse\projeto1\roboweb1.py' 
      Traceback (most recent call last):
        File "C:\Users\soare\AppData\Local\Programs\Python\Python38\lib\runpy.py", line 192, in _run_module_as_main
          return _run_code(code, main_globals, None,
        File "C:\Users\soare\AppData\Local\Programs\Python\Python38\lib\runpy.py", line 85, in _run_code
          exec(code, run_globals)
        File "c:\Users\soare\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\adapter/../..\debugpy\launcher/../..\debugpy\__main__.py", line 39, in <module>
          cli.main()
        File "c:\Users\soare\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\adapter/../..\debugpy\launcher/../..\debugpy/..\debugpy\server\cli.py", line 430, in main
          run()
        File "c:\Users\soare\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\adapter/../..\debugpy\launcher/../..\debugpy/..\debugpy\server\cli.py", line 284, in run_file
          runpy.run_path(target, run_name="__main__")
        File "c:\Users\soare\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_runpy.py", line 320, in run_path
          code, fname = _get_code_from_file(run_name, path_name)
        File "c:\Users\soare\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_runpy.py", line 294, in _get_code_from_file
          code = compile(f.read(), fname, 'exec')
        File "c:\Users\soare\Documents\Estudos\Python\projectCourse\projeto1\roboweb1.py", line 17
          driver = webdriver.Chrome('C:\Users\soare\Documents\Estudos\Python\chromedriver', options=options)
                                    ^
      SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
      PS C:\Users\soare\Documents\Estudos\Python\projectCourse> 
       
       
      Obsrvação: 
      O erro está caindo nesta linha
      driver = webdriver.Chrome('C:\Users\soare\Documents\Estudos\Python\chromedriver', options=options)
       
       
       
      Codigo:
          from selenium import webdriver from selenium.webdriver.common.keys import Keys import time   options = webdriver.ChromeOptions() options.add_argument('--disable-logging') options.add_argument('--log-level=3')     driver = webdriver.Chrome('C:\Users\soare\Documents\Estudos\Python\chromedriver', options=options) driver.get("https://registro.br/")   pesquisa = driver.find_elements_by_id('is-avail-field') pesquisa.clear() pesquisa.send_keys('roboscompython.com.br') pesquisa.send_keys(Keys.RETURN)   time.sleep(8) driver.close()

         
       
       
       
       
       
       
       
       
       
    • Por Rafael Castelhano
      Boa tarde,
       
      Estou tentando criar uma imagem dinamicamente por javascript e carregá-la no input do formulário, apesar da imagem ser gerada corretamente, ao validar o formulário no python é retornado um erro alegando que o arquivo de imagem é inválido ou está corrompido.
       
      Segue gist com o código:
      https://gist.github.com/castelhano/bd72947e13421606453798bbf219cc74
    • Por frogzinkk
      rom itertools import count import time cores = {'verde': '\033[32m', 'amarelo': '\033[33m', 'vermelho': '\033[31m', 'azul': '\033[34m', 'limpar': '\033[m' } servicos = '0' while servicos != '4': print('{}━━━━━━◇◆◇━━━━━━'.format(cores['azul'])*2) print('Seja Bem Vindo ao FrogBank') print('━━━━━━◇◆◇━━━━━━'*2) servicos = str(input('{}{}\nEscolhas o Serviço Desejado!\n[1]Saldo\n[2]Emprestimo\n[3]Transferencia\n[4]Sair{}\n\n'.format( cores['limpar'], cores['amarelo'], cores['limpar']))) class operacoes: saldo_possui = 10 saldo_atual = 0 if servicos == '1': print('\n{}Saldo disponivel: {}\nAguarde o retorno automatico.{}'.format( cores['verde'], saldo_possui+saldo_atual, cores['limpar'])) time.sleep(5) elif servicos == '2': emprestimo = float( input('\nDigite o Valor do Emprestimo Desejado:')) salario = float(input('\nDigite o Valor do Seu Salario:')) anos = float( input('\nDigite Quantos Anos de Parcelamento Deseja?')) messes = anos * 12 valor_parcelas = emprestimo / messes valor_minimo_parcelas = salario * 30 / 100 if valor_parcelas <= valor_minimo_parcelas: saldo_atual = saldo_possui + emprestimo print('{}Emprestimo Aprovado! Seu saldo atual é: {}\n\n Aguarde o retorno automatico.{}'.format( cores['verde'], saldo_atual, cores['limpar'])) time.sleep(5) else: print('{}Emprestimo Recusado! Aguarde o retorno automatico.{}'.format( cores['vermelho'], cores['limpar'])) elif servicos == '3': saldo_possui = 10 input( '\nDigite o numero da conta na qual deseja realizar uma transferencia:\n') print('\n{}Processando...{}\n'.format( cores['verde'], cores['limpar'])) time.sleep(5) valor_transferencia = float( input('Digite o valor da transferencia\n')) print('\nProcessando...\n'.format(cores['verde'], cores['limpar'])) time.sleep(5) if valor_transferencia > saldo_possui: print('{}Voce nao possui saldo para esta ação.{}'.format( cores['vermelho'], cores['limpar'])) input('Digite o valor da transferencia\n') else: valor_transferencia == saldo_possui print( '\n{}Transferencia Realizada com sucesso! Aguarde o retorno automatico.{}\n'.format(cores['verde'], cores['limpar'])) time.sleep(5)
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.