Você está na página 1de 40

CESI0209 – Linguagem de Programação

Aula 05 – Leitura e Escrita de Arquivos


Atualização: 09/jan/24

Fonte da imagem: https://www.codeschool.com/courses/forging-ahead-with-asp-net-core


Este slide são distribuídos sob a seguinte licença:

Você tem a liberdade de:


Compartilhar: copiar, distribuir e transmitir esta obra.
Remixar: criar obras derivadas.

Sob as seguintes condições:


Atribuição: você deve creditar a obra da forma especificada
pelo autor ou licenciante (mas não de maneira que sugira que
estes concedem qualquer aval a você ou ao seu uso da obra).
Uso não comercial: você não pode usar esta obra para fins
comerciais.
Compartilhamento pela mesma licença: se você alterar,
transformar ou criar em cima desta obra, poderá distribuir a
obra resultante apenas sob a mesma licença, ou sob uma
licença similar à presente.
Antes de começar...

Está atento ao calendário?

Este módulo tem Peso 3


na avaliação

Como está sua tática de estudo?


3
Como lidar com erros de
programação?
Não se pergunte: “por que o
programa não funciona?”
Em vez disso, pergunte-se:
“por que o programa está
funcionando deste jeito?”
Estratégias:
Não se limite ao exemplo: teste
vários casos
Imprima resultados intermediários
Tente explicar o problema para
outra pessoa
Dê um tempo e tente de novo
mais tarde
4
Conteúdo

Tipos de Arquivos e Modos de Abertura

Leitura e Escrita em Arquivo

Processamento de um Arquivo

Manipulação de Arquivo CSV

Manipulação de Arquivo JSON

Dicionário em Python
5
Conteúdo

Tipos de Arquivos e Modos de Abertura

Leitura e Escrita em Arquivo

Processamento de um Arquivo

Manipulação de Arquivo CSV

Manipulação de Arquivo JSON

Dicionário em Python
6
Tipos de Arquivos
Existem diferentes tipos de arquivos:
Arquivos de texto simples (txt): contêm
texto legível por humanos e podem ser
.txt
abertos e lidos diretamente.
Arquivos CSV (Comma-Separated Values):
são usados para armazenar dados tabulares,
onde cada linha representa uma linha da
tabela e as colunas são separadas por um .csv
caractere delimitador, geralmente uma
vírgula.
Arquivos JSON (JavaScript Object
Notation): são usados para armazenar e
.json
transmitir dados no formato de objetos
JavaScript.

7
Modos de Abertura de Arquivos

Em Python, a função open() é usada


para abrir arquivos. Ela possui
diferentes modos de abertura,
como:
"r": leitura (default)
"w": escrita (cria um novo arquivo
ou sobrescreve um arquivo
existente)
"a": escrita (adiciona ao final do
arquivo)
"r+": leitura e escrita
"b": modo binário
8
Conteúdo

Tipos de Arquivos e Modos de Abertura

Leitura e Escrita em Arquivo

Processamento de um Arquivo

Manipulação de Arquivo CSV

Manipulação de Arquivo JSON

Dicionário em Python
9
Leitura de Arquivo txt

Vamos começar criando um exemplo.txt conteúdo:


arquivo de texto simples para fins
Olá! Este é um
de demonstração. Crie um exemplo de arquivo em
arquivo chamado exemplo.txt e Python. Este arquivo
será usado para
adicione algumas linhas de texto: demonstrações.

Seu arquivo
deve ficar
assim.

10
Leitura de Arquivo txt

Agora, vamos ler o conteúdo desse arquivo:


A função open serve para O r indica
abrir o arquivo. somente
leitura.
# Leitura de arquivo
with open('exemplo.txt', 'r') as arquivo:
conteudo = arquivo.read()
print(conteudo)
A função .read
ler o conteúdo
do arquivo.
Isso abrirá o arquivo exemplo.txt no modo de
leitura ("r"), lê todo o conteúdo e o imprime.
11
Escrita em Arquivo txt

Vamos criar um novo arquivo e escrever algo nele:


O w indica
abertura para
# Escrita em arquivo escrita.
with open('novo_arquivo.txt', 'w') as novo_arquivo:
novo_arquivo.write("Este é um novo arquivo criado em Python!\n")
novo_arquivo.write("Estamos aprendendo sobre leitura e escrita de
arquivos.")
A função .write
escreve no
arquivo.
Esse código criará um novo arquivo chamado
novo_arquivo.txt (ou sobrescreverá o arquivo se já
existir) e escreverá as linhas fornecidas.

12
Escrita em Arquivo txt

13
Conteúdo

Tipos de Arquivos e Modos de Abertura

Leitura e Escrita em Arquivo

Processamento de um Arquivo

Manipulação de Arquivo CSV

Manipulação de Arquivo JSON

Dicionário em Python
14
Geração de Arquivos e
Processamento de um Arquivo
Para gerar um arquivo com
conteúdo dinâmico,
podemos usar loops,
estruturas condicionais e
outras operações.
Vamos gerar um arquivo
com a tabuada de um
número fornecido pelo
usuário:

15
Geração de Arquivos e
Processamento de um Arquivo
Este código pedirá ao usuário para inserir um número,
calculará a tabuada desse número de 1 a 10 e escreverá os
resultados no arquivo tabuada.txt.

numero = int(input("Digite um número para gerar a


tabuada: "))

with open('tabuada.txt', 'w') as tabuada_arquivo:


for i in range(1, 11):
resultado = numero * i
tabuada_arquivo.write(f"{numero} x {i}
= {resultado}\n")

16
Conteúdo

Tipos de Arquivos e Modos de Abertura

Leitura e Escrita em Arquivo

Processamento de um Arquivo

Manipulação de Arquivo CSV

Manipulação de Arquivo JSON

Dicionário em Python
17
Manipulação de arquivos CSV

Para ler e escrever arquivos CSV em Python, você pode


usar a biblioteca csv. Um exemplo simples de leitura e
escrita de um arquivo CSV:

18
Geração de Arquivos e
Processamento de um Arquivo
import csv

# Leitura de arquivo CSV


with open('dados.csv', 'r') as arquivo_csv:
leitor_csv = csv.reader(arquivo_csv)
for linha in leitor_csv:
print(linha)

# Escrita em arquivo CSV


dados = [
['Nome', 'Idade', 'Email'],
['Joao', '25', 'joao@email.com'],
['Maria', '30', 'maria@email.com']
]

with open('dados_novos.csv', 'w', newline='') as arquivo_csv:


escritor_csv = csv.writer(arquivo_csv)
escritor_csv.writerows(dados)
19
Conteúdo

Tipos de Arquivos e Modos de Abertura

Leitura e Escrita em Arquivo

Processamento de um Arquivo

Manipulação de Arquivo CSV

Manipulação de Arquivo JSON

Dicionário em Python
20
Manipulação de arquivos JSON

Em Python, a biblioteca json é utilizada para manipular


arquivos JSON:

21
Geração de Arquivos e
Processamento de um Arquivo
import json

# Leitura de arquivo JSON


with open('dados.json', 'r') as arquivo_json:
dados = json.load(arquivo_json)
print(dados)

# Escrita em arquivo JSON


dados_novos = {
"nome": "Alice",
"idade": 28,
"email": "alice@email.com"
}

with open('dados_novos.json', 'w') as arquivo_json:


json.dump(dados_novos, arquivo_json)

22
Conteúdo

Tipos de Arquivos e Modos de Abertura

Leitura e Escrita em Arquivo

Processamento de um Arquivo

Manipulação de Arquivo CSV

Manipulação de Arquivo JSON

Dicionário em Python
23
O que é um dicionário em Python?

Os dicionários em Python são úteis para mapear


informações relacionadas, como informações de usuário,
configurações, dados estruturados, entre outros, oferecendo
uma maneira flexível e eficiente de organizar e acessar
dados.

# Dicionário de informações de pessoas


pessoa1 = {
'nome': 'Alice',
'idade': 30,
'email': 'alice@email.com',
'cidade': 'São Paulo'
}

24
O que é um dicionário em Python?

Um dicionário em Python é
definido por chaves {} e consiste
# Exemplo de um dicionário
em pares de chave-valor, onde vazio
cada chave é única e mapeia dicionario_vazio = {}
para um valor correspondente.
# Dicionário com chaves e
valores
As chaves podem ser de dicionario = {
diferentes tipos (geralmente são 'chave1': 'valor1',
strings ou números), enquanto 'chave2': 'valor2',
'chave3': 'valor3'
os valores podem ser de }
qualquer tipo de dado (números,
strings, listas, outros dicionários,
etc.).
25
Características dos Dicionários

Acesso aos Elementos: Os valores em um dicionário são


acessados por suas chaves, fornecendo uma maneira
eficiente de recuperar informações associadas a uma chave
específica.

# Acessando um valor usando a chave


print(dicionario['chave2']) # Saída: 'valor2'

26
Características dos Dicionários

Mutabilidade: Os dicionários são mutáveis, o que significa


que você pode adicionar, alterar ou remover elementos
após a criação.

# Adicionando um novo par chave-valor ao dicionário


dicionario['nova_chave'] = 'novo_valor'

# Modificando o valor de uma chave existente


dicionario['chave1'] = 'novo_valor1'

# Removendo um par chave-valor do dicionário


del dicionario['chave3']

27
Características dos Dicionários

Iteração: Você pode iterar através de chaves, valores ou


ambos em um dicionário usando loops.
# Iterando pelas chaves do dicionário
for chave in dicionário.keys():
print(chave) # Isso imprimirá as chaves

# Iterando pelos valores do dicionário


for valor in dicionario.values():
print(valor) # Isso imprimirá os valores

# Iterando por chaves e valores simultaneamente


for chave, valor in dicionario.items():
print(f'Chave: {chave}, Valor: {valor}')

28
Características dos Dicionários

Métodos Úteis: Existem métodos integrados em Python


para trabalhar com dicionários, como keys() para obter as
chaves, values() para obter os valores e items() para obter
pares chave-valor.

# Obter todas as chaves do dicionário


chaves = dicionario.keys()

# Obter todos os valores do dicionário


valores = dicionario.values()

# Obter pares chave-valor como tuplas


itens = dicionario.items()

29
Problema 1
Manipulação de Dados em Arquivo CSV
Suponha que você tenha um arquivo CSV chamado
dados_alunos.csv contendo informações sobre alunos,
com as seguintes colunas: Nome, Idade, Nota.
Faça um programa que realize as seguintes atividades:
Leitura do Arquivo CSV: Ler o arquivo dados_alunos.csv
e exibir na tela todas as informações dos alunos.
Cálculo da Média das Notas: Calcular a média das notas
dos alunos.
Adicionar Novo Aluno: Solicitar ao usuário para inserir
informações de um novo aluno (nome, idade e nota) e
adicionar essas informações ao arquivo CSV.
30
Problema 1
Manipulação de Dados em Arquivo CSV
import csv
# Leitura do arquivo CSV e exibição das informações dos alunos
def ler_arquivo_csv():
with open('dados_alunos.csv', 'r') as arquivo_csv:
leitor_csv = csv.DictReader(arquivo_csv)
for linha in leitor_csv:
print(f"Nome: {linha['Nome']}, Idade:
{linha['Idade']}, Nota: {linha['Nota']}")

# Cálculo da média das notas dos alunos


def calcular_media_notas():
notas = []
with open('dados_alunos.csv', 'r') as arquivo_csv:
leitor_csv = csv.DictReader(arquivo_csv)
for linha in leitor_csv:
notas.append(float(linha['Nota']))
media = sum(notas) / len(notas)
print(f"A média das notas é: {media:.2f}")
31
Problema 1
Manipulação de Dados em Arquivo CSV

# Adicionar novo aluno ao arquivo CSV


def adicionar_novo_aluno():
nome = input("Digite o nome do novo aluno: ")
idade = input("Digite a idade do novo aluno: ")
nota = input("Digite a nota do novo aluno: ")

with open('dados_alunos.csv', 'a', newline='') as arquivo_csv:


escritor_csv = csv.writer(arquivo_csv)
escritor_csv.writerow([nome, idade, nota])

32
Problema 1
Manipulação de Dados em Arquivo CSV
# Chamada das funções para realizar o exercício
def main():
print("1. Exibir informações dos alunos")
print("2. Calcular média das notas dos alunos")
print("3. Adicionar novo aluno")
opcao = input("Escolha uma opção: ")
if opcao == '1':
ler_arquivo_csv()
elif opcao == '2':
calcular_media_notas()
elif opcao == '3':
adicionar_novo_aluno()
else:
print("Opção inválida")

if __name__=="__main__":
main()
33
Problema 2
Manipulação de Dados em Arquivo JSON
Suponha que você tenha um arquivo JSON chamado
livros.json com dados fictícios de alguns livros no formato
JSON.
Faça um programa que realize as seguintes atividades:
Ler o arquivo JSON contendo informações sobre livros.
Adicionar um novo livro ao arquivo JSON.
Salvar as alterações de volta no arquivo.

34
Problema 2
Preparação
Suponha que você tenha um arquivo JSON chamado
livros.json com dados fictícios de alguns livros no formato
JSON.
[
{
"titulo": "Python Crash Course",
"autor": "Eric Matthes",
"ano_publicacao": 2015
},
{
"titulo": "Clean Code",
"autor": "Robert C. Martin",
"ano_publicacao": 2008
}
// Outros livros...
]
35
Crie um arquivo chamado livros.json com dados fictícios de alguns livros no formato JSON.

Problema 2
Leitura do Arquivo JSON:
Leia o arquivo livros.json e carregue os dados em uma lista
de dicionários em Python.

import json

# Leitura do arquivo JSON


def ler_arquivo_json():
with open('livros.json', 'r') as arquivo_json:
dados_livros = json.load(arquivo_json)
return dados_livros

36
Crie um arquivo chamado livros.json com dados fictícios de alguns livros no formato JSON.

Problema 2
Adição de Novo Livro:
Crie uma função que solicite ao usuário para inserir
informações de um novo livro (título, autor, ano de
publicação).
Adicione as informações do novo livro à lista de
dicionários.
# Adicionar novo livro ao arquivo JSON
def adicionar_novo_livro(dados_livros):
novo_livro = {}
novo_livro['titulo'] = input("Digite o título do novo livro: ")
novo_livro['autor'] = input("Digite o autor do novo livro: ")
novo_livro['ano_publicacao'] = int(input("Digite o ano de
publicação do novo livro: "))
dados_livros.append(novo_livro)
return dados_livros
37
Crie um arquivo chamado livros.json com dados fictícios de alguns livros no formato JSON.

Problema 2
Atualização do Arquivo JSON
Salve as alterações de volta no arquivo livros.json.

# Salvar alterações de volta no arquivo JSON


def salvar_arquivo_json(dados_livros):
with open('livros.json', 'w') as arquivo_json:
json.dump(dados_livros, arquivo_json, indent=4)

# Execução do programa
def main():
livros = ler_arquivo_json()
livros = adicionar_novo_livro(livros)
salvar_arquivo_json(livros)
print("Novo livro adicionado com sucesso!")

if __name__ == "__main__":
main()
38
Referências bibliográficas
Menezes, Nilo Ney Coutinho (2014). Introdução à
Programação com Python, 2 ed. Editora Novatec.
HETLAND, Magnus Lie (2008). Beginning Python: From
Novice to Professional. Springer eBooks, 2ª edição.
Disponível em: http://dx.doi.org/10.1007/978-1-4302-
0634-7.
Horstmann, Cay & Necaise, Rance D. (2013). Python for
Everyone. John Wiley & Sons.
Liang, Y. D. (2013). Introduction to Programming Using
Python. Pearson
39
Dúvidas?

Você também pode gostar