Ir para conteúdo
Fórum Script Brasil
  • 0

Arquivo com dicionarios


Tomaz Pontes

Pergunta

Ola pessoal, não sou um usuario avancado no python, no momento estou desenvolvendo um programa de cadastro de funcionarios para um trabalho de faculdade, porem estou com problemas pois consegui criar a funcao e o dicionario que "armazena" as informacoes, mas preciso criar um Arquivo para armazena-lo e consultar suas informacoes depois. No entanto a opcao - writelines e outras - não aceita(m) listas ou dicionarios como parametro, logo, peco vossa ajuda. Aqui esta o que consegui desenvolver:

funcionarios = []

def cadastrarfuncionario():
    lista_cpf = []
    contador = 0
    while contador < 1:
        funcionario = {}
        funcionario['nome'] = input('Insira o nome do funcionario: ').title()
        funcionario['cpf'] = input('Insira o CPF do funcionario: ')
        if funcionario['cpf'] in lista_cpf:
            print('Este CPF já esta cadastrado!')
        else:
            cpf_conv = list(funcionario['cpf'])
            basecpf = (((int(cpf_conv[0])*10)+(int(cpf_conv[1])*9)+(int(cpf_conv[2])*8)+(int(cpf_conv[3])*7)+(int(cpf_conv[4])*6)+(int(cpf_conv[5])*5)+(int(cpf_conv[6])*4)+(int(cpf_conv[7])*3)+(int(cpf_conv[8])*2))*10)%11
            basecpf2 = (((int(cpf_conv[0]) * 11) + (int(cpf_conv[1]) * 10) + (int(cpf_conv[2]) * 9) + (int(cpf_conv[3]) * 8) + (int(cpf_conv[4]) * 7)+(int(cpf_conv[5])*6)+(int(cpf_conv[6])*5)+(int(cpf_conv[7])*4)+(int(cpf_conv[8])*3)+(int(cpf_conv[9])*2))*10)%11
            if (basecpf != int(cpf_conv[9]) and basecpf != 10) or (basecpf2 != int(cpf_conv[10]) and basecpf2 != 10):
                print('CPF Invalido!')
            else:
                lista_cpf.append(funcionario['cpf'])
                funcionario['sexo'] = int(input('Insira o sexo do funcionario,0 para masculino ou 1 para feminino: '))
                funcionario['d_nascimento'] = int(input('Insira o dia de nascimento do funcionario: '))
                funcionario['m_nascimento'] = int(input('Insira o mes de nascimento do funcionario: '))
                funcionario['a_nascimento'] = int(input('Insira o ano de nascimento do funcionario: '))
                funcionario['cargo'] = int(input('Insira o cargo do funcionario,0 - Pedreiro, 1 - Engenheiro, 2 - Tecnico Adm.: '))
                funcionario['salario'] = float(input('Insira o salario do funcionario: '))
                funcionario['d_contratacao'] = input('Insira o dia de contratacao do funcionario: ')
                funcionario['m_contratacao'] = input('Insira o mes de contratacao do funcionario: ')
                funcionario['a_contratacao'] = input('Insira o ano de contratacao do funcionario: ')
                funcionarios.append(funcionario)
        saida1 = input('Deseja cadastrar outro funcionario? S/N? ').upper()
        if saida1 == 'N':
            contador = 1
    arq = open('cadastros.txt', 'a') #PROBLEMA---------#PROBLEMA
    arq.writelines(funcionarios) #PROBLEMA-------#PROBLEMA
    texto = arq.readlines() #PROBLEMA----#PROBLEMA
    for linha in texto:
        print(texto)
    arq.close()
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

ola, fiz aqui um exemplo simples que pode te ajudar

arquivo = open('banco.txt', 'w')

dicio = {
    'nome' : 'Afonso',
    'cpd' : 123
    }

arquivo.writelines(str(dicio.values()))

arquivo.close()

arquivo = open('banco.txt', 'r')

print(arquivo.readlines())

 

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...