Arquivos e Dicionários¶
Arquivos¶
Até agora nossos dados desapareciam ao sair do IDLE
Arquivos servem para armazenamento permanente
Um arquivo é uma área em disco onde podemos ler ou gravar informações
Acessamos o arquivo pelo seu nome
Para acessar um arquivo é preciso abri-lo
Ao abrir o arquivo informamos seu nome, diretório onde fica (se necessário) e que operações iremos executar: leitura e/ou escrita
A função que abre os arquivo é open e os modos são: r – leitura, w – escrita, a – append, b – binário, + (atualização)
Os métodos para ler ou escrever são read e write
Os arquivos devem ser fechados com close
arquivo = open('numeros.txt','w')
for linha in range(1,101):
arquivo.write('%d\n' %linha)
arquivo.close()
Caso você execute este programa nada aparecerá na tela
Procure no diretório c:Python3x o arquivo números.txt
O modo w cria o arquivo se ele não existir, caso exista ele será apagado e reescrito
arquivo = open('numeros.txt','w')
for linha in arquivo.readlines():
print(linha)
arquivo.close()
readlines gera uma lista onde cada elemento é uma linha lida
Arquivos textos são simples e possuem um caracter de controle no final para pular linha
Se quisermos tirar esse caracter do final podemos usar print(linha.rstrip())
Pythonic way¶
with open('numeros.txt','r') as f:
print(f.read())
O código acima faz o mesmo da forma pythônica.
No slide anterior vimos como programadores normais fazem a leitura
Python é legal, pois sempre você pode se aprofundar mais
Python é simples, mas difícil de esgotar
Cripto¶
Leia mensagem.txt e grave cripto.txt com todas as vogais trocadas por ‘*’
texto = open('mensagem.txt')
saida = open('cripto.txt','w')
for linha in texto.readlines():
for letra in linha:
if letra in 'aeiou':
saida.write('*')
else:
saida.write(letra)
texto.close()
saida.close()
Validate IP address¶
def ip_ok(ip):
ip = ip.split('.')
for byte in ip:
if int(byte) > 255:
return False
return True
arq = open('IPS.txt')
validos = open('Válidos.txt','w')
invalidos = open('Inválidos.txt','w')
for linha in arq.readlines():
if ip_ok(linha):
validos.write(linha)
else:
invalidos.write(linha)
arq.close()
validos.close()
invalidos.close()
HTML¶
Páginas web são escritas em HTML (Hypertext Mark-up Language)
Tags HTML começam com < e terminam com >
A página web é escrita entre <html> e </html> que é a tag de maior nível
Normalmente inserimos código javascript
Javascript não é um subconjunto de Java
arquivo = open('ola.html','w',encoding = 'utf-8')
arquivo.write('''<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset = "utf-8">
<title>Título da Página</title>
</head>
<body>
Olá!
</body>
</html>''')
arquivo.close()
Note o parâmetro de codifição utf-8 ; Sem ele os ascentos não sairão
Dictionaries¶
O dicionário em si consiste em relacionar uma chave a um valor específico
Diferentemente das listas, onde o índice é um número, dicionários utilizam suas chaves como índice
Para adicionar novos elementos não preciso de append, basta fazer a atribuição
Se a chave já existe: o valor associado é alterado
Se a chave não existe: a nova chave é adicionada
Faça um programa que leia o arquivo alice.txt e conte o número de ocorrências de cada palavra no texto. Obs.: para saber os caracteres especiais use import string e utilize string.punctuation
arq = open('alice.txt')
texto = arq.read()
texto = texto.lower()
import string
for c in string.punctuation:
texto = texto.replace(c, ' ')
texto = texto.split()
dic = {}
for p in texto:
if p not in dic:
dic[p] = 1
else:
dic[p] += 1
print ('Alice aparece %s vezes' %dic['alice'])
arq.close()
Exercício Programa 1¶
“A vida é como andar de bicicleta. Para manter o equilíbrio, é preciso se manter em movimento”. - Einstein.