Python
como escrever em um arquivo, ler, apagar e atualizar um arquivo
Usando o paradigma proceudural, este trabalho consiste em realizar uma aplicação Agenda de Contatos, que mantém suas informações em um arquivo chamado agenda.agd.Essa agenda permite operações através de menu, para adicionar, excluir, editar ou enviar email para um contato, alem de listar contatos.
A operacao listar contatos permite uma serie de filtros que podem ser utilizados:
listar contatos com um determinado sobrenome,
listar contatos que residem numa determinada cidade
listar contatos que tenham um e-mail com um determinado domínio.
Cada contato é definido pela seguinte estrutura:
Nome: primeiro nome e sobrenome;
Endereco: Rua, número, complemento, bairro e cidade.
Telefone: DDD e número
E-mail: endereço contendo domínio.
Caso o arquivo não exista no diretório do programa, o arquivo deverá ser criado de forma automática.
Obs: lembrando com sempre que python considera a tabulação como divisor de conteúdo então muita anteção, estamos partindo do ponto que você já saiba configurar o ambiente Python futuramente vou colocar algumas detalhes e links sobre isso.
'''
Created on 14/06/2012
@author: Evandro, Diego, Luis
'''
#biblioteca para envio de email
import smtplib
import string
if __name__ == '__main__':
pass
# pega o acao que usuario deseja realizar
acao = raw_input("Digite o acao que voce deseja realizar"+
"\n 1 - Adicionar contato"+
"\n 2 - Excluir contato "+
"\n 3 - Editar contato "+
"\n 4 - Enviar e-mail"+
"\n 5 - Listar contatos "+
"\n 0 - Para Sair")
while(acao != "0"):
# acao == "1" Adicionar contato
if(acao == "1"):
# pega o nome do usuario e escreve no arquivo com limitador
nome = raw_input("Digite o nome: ")
escrever = open("agendas.agd","a")
escrever.write(nome+";")
escrever.close()
# pega o endereco do usuario e escreve no arquivo com limitador
endereco = raw_input("Digite o endereco: ")
escrever = open("agendas.agd","a")
escrever.write(endereco+";")
escrever.close()
# pega o email do usuario e escreve no arquivo com limitador
email = raw_input("Digite o email: ")
escrever = open("agendas.agd","a")
escrever.write(email+";")
escrever.close()
# pega o telefone do usuario e escreve no arquivo com limitador
telefone = raw_input("Digite o telefone: ")
escrever = open("agendas.agd","a")
escrever.write(telefone+"\n")
escrever.close()
print("Ok, contato "+nome+" cadastrado")
# acao == "2" Excluir contato
if(acao == "2"):
# contador tem uma funcao importante de contar linhas
count = 0
# pega o nome do contato para apagar
nome_apagar = raw_input("Digite o nome do contato para apagar ")
# pega o arquivo le e joga em um array dividido por linhas
arquivo = open("agendas.agd","r")
linhas = arquivo.read()
arraycontato = string.split(linhas,"\n")
'''print 'Conta nro de linhas =' + str(len(arraycontato))'''
# limpa arquivo
escrever = open("agendas.agd","w")
escrever.write("")
escrever.close()
#itera contato apartir de arraycontato para pegar separado detalhes do contado
for contato in arraycontato:
#separa detalhes do contato
detalhecontato = string.split(contato,";")
#compara detalhe do primeiro detalhe do contato que eh nome
# pra verificar se eh igual ao nome a apagar
# se for igual ele nao insere no arquvo novo que esta sendo gerado
if(detalhecontato[0] == nome_apagar):
count = count + 1
else:
#insere contato no arquivo, quando nao cair na regra nome a apagar igual ao primeiro detalhe do contato
escrever = open("agendas.agd","a")
escrever.write(arraycontato[count]+"\n")
escrever.close()
print arraycontato[count]
count = count + 1
if(acao == "3"):
# contador tem uma funcao importante de contar linhas
count = 0
# pega o nome do contato para Editar
nome_editar = raw_input("Digite o nome do contato para Editar ")
# pega o arquivo le e joga em um array dividido por linhas
arquivo = open("agendas.agd","r")
linhas = arquivo.read()
arraycontato = string.split(linhas,"\n")
#limpa o arquivo
limpar = open("agendas.agd","w")
limpar.write("")
limpar.close()
#itera contato apartir de arraycontato para pegar separado detalhes do contado
for contato in arraycontato:
#separa detalhes do contato
detalhecontato = string.split(contato,";")
#compara detalhe do primeiro detalhe do contato que eh nome
# pra verificar se eh igual ao nome a apagar
# se for igual ele nao insere no arquvo novo que esta sendo gerado
if(detalhecontato[0] == nome_editar):
#altera o conteudo do contato desejado
detalhecontato[0] = raw_input("Nome do contato "+detalhecontato[0]+" Editar ? Se desejar escreva novo nome, se nao escreva o atual")
detalhecontato[1] = raw_input("Endreco do contato "+detalhecontato[1]+" Editar ? Se desejar escreva novo endereco, se nao escreva o atual")
detalhecontato[2] = raw_input("Email do contato "+detalhecontato[2]+" Editar ? Se desejar escreva novo email, se nao escreva o atual")
detalhecontato[3] = raw_input("Telefone do contato "+detalhecontato[3]+" Editar ? Se desejar escreva novo telefone, se nao escreva o atual")
# atribui novos valores ao contato escolhido
arraycontato[count] = detalhecontato[0]+";"+detalhecontato[1]+";"+detalhecontato[2]+";"+detalhecontato[3]
#insere contato no arquivo
escrever = open("agendas.agd","a")
escrever.write(arraycontato[count]+"\n")
escrever.close()
print arraycontato[count]
count = count + 1
if(acao == "4"):
# pega o nome do contato para enviar email
nome_enviaremail = raw_input("Digite o nome do contato para enviar email ")
# pega o arquivo le e joga em um array dividido por linhas
arquivo = open("agendas.agd","r")
linhas = arquivo.read()
arraycontato = string.split(linhas,"\n")
for contato in arraycontato:
detalhecontato = string.split(contato,";")
if(detalhecontato[0] == nome_enviaremail):
SMTP_SERVER = 'smtp.gmail.com'
SMTP_PORT = 587
sender = 'dfpsg3@gmail.com'
recipient = detalhecontato[2]
subject = 'Python Contato'
body = 'Ola '+detalhecontato[0]
body = ""+body+"\n"+ str(raw_input("Digite sua mensagem para o contato "+detalhecontato[0]))
"Sends an e-mail to the specified recipient."
body = "" + body + ""
headers = ["From: " + sender,
"Subject: " + subject,
"To: " + recipient,
"MIME-Version: 1.0",
"Content-Type: text/html"]
headers = "\r\n".join(headers)
session = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
session.ehlo()
session.starttls()
session.ehlo
session.login(sender, "suasenha")
session.sendmail(sender,"dfpsg3@gmail.com", headers + "\r\n\r\n" + body)
session.sendmail(sender,recipient, headers + "\r\n\r\n" + body)
print "De:"+sender
print "Para:"+recipient
print "Cabecalho: "+headers
print "Corpo: \n"+body
session.quit()
if(acao == "5"):
arquivo = open("agendas.agd","r")
linhas = arquivo.read()
print linhas
sobrenome = raw_input("Digite o sobrenome ")
arquivo = open("agendas.agd","r")
linhas = arquivo.read()
arraycontato = string.split(linhas,"\n")
for contato in arraycontato:
detalhecontato = string.split(contato,";")
detalhenome = string.split(detalhecontato[0]," ")
contnome = len(detalhenome)-1
if(detalhenome[contnome] == sobrenome):
print contato
cidade_pes = raw_input("Digite a Cidade ")
arquivo = open("agendas.agd","r")
linhas = arquivo.read()
arraycontato = string.split(linhas,"\n")
for contato in arraycontato:
if(contato != ""):
detalhecontato = string.split(contato,";")
detalhenome = string.split(detalhecontato[1],",")
contnome = len(detalhenome)-1
if(detalhenome[4] == cidade_pes):
print contato
email_pes = raw_input("Digite o final do Email ")
arquivo = open("agendas.agd","r")
linhas = arquivo.read()
arraycontato = string.split(linhas,"\n")
for contato in arraycontato:
if(contato != ""):
detalhecontato = string.split(contato,";")
detalhenome = string.split(detalhecontato[2],"@")
contnome = len(detalhenome)-1
if(detalhenome[1] == email_pes):
print contato
# pega o acao que usuario deseja realizar
acao = raw_input("\n Digite o acao que voce deseja realizar"+
"\n 1 - Adicionar contato"+
"\n 2 - Excluir contato "+
"\n 3 - Editar contato "+
"\n 4 - Enviar e-mail"+
"\n 5 - Listar contatos "
"\n 0 - Para Sair")