yFone - Yes, outra agenda telefonica escrita em python! ;- )
Publicado por Murilo R. Esplugues 30/11/2004
[ Hits: 12.240 ]
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()
Gerar backups de banco de dados MySQL
Acompanhar status de uma replicação MySQL
Dump MySQL com relatório de logs por e-mail
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalação Microsoft Edge no Linux Mint 22
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Máquinas Virtuais com IP estático acessando Internet no Virtualbox
Será possível instalar Linux Mint LMDE em Sony Vaio? (4)
como instalar o modo hybrid da gt 520m, no manjaro (5)
Erro:#include <gtk/gtk.h... arquivo ou diretório inexistente (1)