yFone - Yes, outra agenda telefonica escrita em python! ;- )
Publicado por Murilo R. Esplugues 30/11/2004
[ Hits: 12.331 ]
Homepage: http://www.helpday.blogspot.com/
yFone é uma agenda telefonônica escrita em python (modo-texto) e utilizando shelve como bd. Com ele você pode adicionar, remover, pesquisar e deletar nomes e telefones de sua lista de contatos.
É extremamente simples e fácil de utilizar, ela funcionou bem com uma lista de 500 números e provavelmente suportará bem mais...
Dúvidas, sugestões: mail-me.
#!/usr/bin/env python # Fonelista (Agenda Telefonica) le, adiciona e apaga informacoes de um # banco de dados. O codigo eh pequeno e de facil entendimento. #Mesmo que nao o usem como uma agenda, ele eh util para mostrar certas funcionalidades da linguagem, como acesso a um pseudo banco de dados e tratamento de erros basico. # Este programa esta sendo distribuido livremente, voce tem liberdade # para modifica-lo e distribui-lo contanto que mantenha este aviso, a # versao, nome do autor e email. # Programa: FONELISTA 0.1 - 10/2004 # Autor: Murilo R. Esplugues # Sugestoes: murilo_esplugues@yahoo.com.br # 'shelve' eh um objeto do tipo dicionario que possui persitencia, import sys, shelve, time ## Caso nao exista tenta criar o arquivo 'contatos.db'. def abrirDB(): dbarquivo = 'contatos.db' try: global db db = shelve.open(dbarquivo) except IOError: print 'Erro ao abrir banco de dados!' sys.exit(0) print print 'Banco de dados', dbarquivo, 'aberto!' # Listando contatos def STATUS(): print '\n' * 5 COUNT = 0 LINHAS = 30 for NAME in db.keys(): TESTE = len(NAME) PONTO = '_' SINAL = -(TESTE - 22) * PONTO COUNT = COUNT + 1 if COUNT <= LINHAS: print 'Nome:',NAME,SINAL,'Numero:',db[NAME] else: more = raw_input('Mais? (s/n): ') if more in ['s','S']: COUNT = 0 elif more in ['n','N']: break else: print 'Opcao nao encontrada!' time.sleep(1) print 'Voce tem:',len(db),'registro(s)!' print ## Loop (menu), mantem o loop ate que se pressione a tecla 's' (sair) def Main(): ESCOLHA = None while ESCOLHA != 's' and ESCOLHA != 'S': print '\n' * 2 print 'Bem vindo a lista de Contatos' ESCOLHA = raw_input(""" a - Adicionar d - Deletar v - Ver s - Sair Escolha um opcao: """) if ESCOLHA in ['a','A']: adicionar() elif ESCOLHA in ['d','D']: deletar() elif ESCOLHA in ['v','D']: ver() elif ESCOLHA in ['s','S']: fecharDB() else: print 'Opcao nao encontrada' time.sleep(1) Main() ## Opcao 'v', mostra todo o dicionario, (nomes e telefones), atraves do 'STATUS' # pode-se tambem procurar por um nome aqui, faz-se o teste com 'db.has_key(VERNOME)' # para saber se ha o nome nesse banco de dados. def ver(): STATUS() if len(db) == 0: print 'Sua lista de Contatos esta vazia!' else: print print 's para sair' print VERNOME = raw_input('Digite o nome que quer ver: ') if VERNOME == 's' or VERNOME == 'S': print 'Voltando ao menu principal...' else: if db.has_key(VERNOME): MOSTRAR = db[VERNOME] print '\n' * 2 print 'NOME: ',VERNOME, 'FONE: ',MOSTRAR else: print 'Nome nao encontrado!' ## Opcao 'd', serve para deletar um registro da lista de contatos. # caso o nome dado esteja incorreto ou nao exista, python mostrara # uma mensagem de erro, isso eh novamente tratado aqui com 'db.has_key(DELETAR)' def deletar(): STATUS() if len(db) == 0: print 'Sua lista de Contatos esta vazia!' else: print print 's para sair' print DELETAR = raw_input('Digite o nome que quer apagar: ') if DELETAR == 's' or DELETAR == 'S': print 'Voltando ao menu principal' else: STATUS() if db.has_key(DELETAR): del db[DELETAR] STATUS() print 'O contato', DELETAR, 'foi apagado com sucesso!' ## Opcao 'a'. Para adicionar um registro ao banco de dados. # Caso o nome exista o registro # nao sera efetuado, caso o 'nome' tenha mais de 21 letras # ele sera rejeitado, isso eh assim para que se possa ter uma # saida bonita e organizada do 'STATUS'. def adicionar(): print print 's para sair' print MAXNAME = 21 NOME = raw_input('Nome: ') if db.has_key(NOME): print '\n', NOME,'ja existe' time.sleep(1) elif NOME in ['','\b']: print "Nome em branco nao e permitido" time.sleep(1) elif NOME == 's' or NOME == 'S': print 'Voltando ao menu principal...' elif len(NOME) > MAXNAME: print print ' Nome pode ter no maximo 21 letras!' print ' Experimente usar apenas o primeiro-nome + identificador!' print ' Ex: joao-escola' else: FONE = raw_input('Telefone: ') if FONE in ['s','S']: print 'Voltando ao menu principal...' elif FONE in ['','\b']: print 'Telefone em branco nao e permitido' time.sleep(1) else: db[NOME]=FONE STATUS() # Fechando o Db... def fecharDB(): db.close() print print 'Banco de dados fechado!' sys.exit() if __name__ == '__main__': abrirDB() Main()
Dump MySQL com relatório de logs por e-mail
Python com CouchDB usando couchdbkit
Acompanhar status de uma replicação MySQL
Backup automatizado de toda a base MySQL
Aprenda a Gerenciar Permissões de Arquivos no Linux
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Como instalar o Google Cloud CLI no Ubuntu/Debian
Mantenha seu Sistema Leve e Rápido com a Limpeza do APT!
Procurando vídeos de YouTube pelo terminal e assistindo via mpv (2025)
Alguém que utilize o Warsaw do BB no Ubuntu 24.04 (2)
como instalar o docker desktop e o docker no debian 12 arm64 (11)