S06 - Atividade de Aprendizagem (1 de 2): Trabalhando com Arquivos
Preparação
Visão Geral
Até este ponto, a maioria dos programas que você escreveu receberam informações do usuário, executaram ações com base nessa entrada e exibiram algo na tela. Seus programas podem se tornar ainda mais úteis e significativos quando forem capazes de trabalhar com outras informações, como grandes quantidades de dados, que já estão armazenadas em algum lugar (ou seja, não precisa vir apenas da entrada do usuário). Por exemplo, considere um departamento de saúde que rastreia a incidência de uma determinada doença, uma empresa de animação que trabalha com as cenas de um filme ou uma loja online que mantém um inventário de usuários, produtos e pedidos.
Dependendo do contexto, as informações nos exemplos acima podem ser armazenadas em vários formatos ou sistemas de banco de dados. Mas no nível mais fundamental, são armazenadas como arquivos em um computador ou servidor. Você provavelmente já usa arquivos em seu computador, como imagens, documentos de processadores de texto, planilhas, entre outros. Em uso normal, você abrirá esses arquivos e lerá seções, encontrará informações importantes, tomará decisões, atualizará o documento e fará outras coisas.
Como você aprendeu nas aulas anteriores, ao desenvolver programas, podemos fazer com que o computador execute tarefas repetidas vezes, tomando decisões e ações ao longo do caminho. Essa capacidade combina muito bem com um arquivo que contém vários dados. O arquivo pode conter mais informações do que uma pessoa poderia internalizar ou analisar para tomar decisões, mas um programa pode filtrar a grande quantidade de informações e tomar ações ou chamar a atenção do usuário.
Nesta aula você aprenderá como criar programas que funcionem com arquivos, e como descobrir informações importantes, como empresas com preços de ações em alta ou países com surtos de doenças.
Material de Preparação
Assista aos seguintes vídeos:
Link Direto: Trabalhando com Arquivos
Link Direto: Removendo Espaços em Branco
Link Direto: Dividindo Strings
Link Direto: Exemplo de Leitura de Arquivo
Abrir Arquivos
Conforme mostrado nos vídeos, um arquivo pode ser aberto em Python com a seguinte sintaxe:
open("nome do arquivo")
É importante fechar o arquivo depois de utilizá-lo. Em Python, recomenda-se usar a sintaxe with para que ele feche automaticamente o arquivo quando seu programa sair daquele bloco de código:
with open("nome do arquivo") as variavel_do_arquivo:
# O código para fazer algo com o arquivo vai aqui
Se o arquivo que você estava lendo fosse chamado de cores.txt e você quisesse que ele fosse salvo em uma variável arquivo_de_cores, você usaria o seguinte:
with open("cores.txt") as arquivo_de_cores:
# O código para fazer algo com o arquivo de cores vai aqui
Observe que a função open possui outras opções que você não usará neste curso, como a capacidade de criar novos arquivos, fazer alterações em arquivos existentes, etc. Caso queira saber mais, você pode pesquisar esses tópicos na internet.
Ler Dados de Arquivos
Existem várias maneiras de ler dados de arquivos em Python. Uma das abordagens mais diretas é usar um loop for para percorrer linha por linha, da mesma forma que você faria se estivesse percorrendo os itens de uma lista.
Depois que o arquivo for aberto, você poderá percorrer cada linha da seguinte maneira:
with open("cores.txt") as arquivo_de_cores:
for linha in arquivo_de_cores:
# Código para fazer algo com cada linha vai aqui
Análise de Strings
Depois de carregar os dados de uma linha do arquivo em uma variável, pode ser necessário limpar essa linha ou dividi-la em partes individuais para usar separadamente.
Remover Espaços em Branco Adicionais
Uma coisa comum a fazer é remover qualquer espaço extra no início ou no final de uma string. Esse "espaço" pode estar na forma de espaços regulares, caracteres de tabulação ou caracteres de nova linha (\n). Em Python, existe uma função interna chamada .strip() que remove esses caracteres da string. Ela pode ser usada da seguinte forma:
linha_limpa = linha_velha.strip()
Observe que a função .strip() não altera a variável de string original, em vez disso, gera e retorna uma nova que você pode salvar em uma variável.
Divisão de Strings em Partes
Outra tarefa comum com strings é querer separá-las em partes individuais. Python contém uma função integrada, chamada .split(), que pode dividir uma string com base em qualquer caractere que você definir para separar as partes.
Por exemplo, se você quiser dividir uma string usando um espaço como separador para que cada palavra seja uma variável separada, você pode usar o seguinte:
frase = "Eu irei e cumprirei"
palavras = frase.split(" ")
# A variável "palavras" agora é uma lista que contém cada palavra.
# Você pode percorrer cada palavra e fazer algo com ela, como exibi-la:
for palavra in palavras:
print(palavra)
Se você tiver outro caractere que separa as partes de suas strings, como uma vírgula, você pode dividir usando o código .split(",").
Linhas de Cabeçalho
Alguns arquivos possuem uma primeira linha que serve como cabeçalho ou linha de título, diferente das demais linhas do arquivo. Por exemplo, considere um arquivo como o seguinte, que contém nomes e idades de pessoas:
nome, idade
Pedro, 24
Emília, 28
Susana, 41
Davi, 15
Se um programa fosse percorrer este arquivo linha por linha, dividir cada linha com base na vírgula e tentar carregar os valores em variáveis, isso causaria um problema. Na primeira linha, o programa tentaria colocar "nome" em uma variável para o nome da pessoa e "idade" em uma variável numérica para a idade da pessoa. Isso não funcionaria, porque a string "idade" não é um número.
with open("nomes_e_idades.txt") as arquivo_nomes:
for linha in arquivo_nomes:
partes = linha.split(",")
nome = partes[0]
idade = int(partes[1]) # Isso vai gerar um erro, porque "idade" não é um número
Para resolver esse problema, precisamos pular a primeira linha de alguma forma. Existem várias maneiras de fazer isso. Por exemplo, você pode usar uma variável que conte cada linha do arquivo e, em seguida, usar uma instrução if para verificar se a contagem corresponde à primeira linha.
Uma abordagem semelhante seria criar uma variável booleana para indicar se já processamos a primeira linha. Em seguida, dentro do loop, usar uma instrução if para verificar se é a primeira linha: se for, pule-a e defina a variável como verdadeira.
Outra abordagem é avançar a variável leitora do arquivo para a próxima linha, antes de iniciar o loop. Para fazer isso, você pode ler uma linha do arquivo diretamente assim:
linha_cabecalho = arquivo_nomes.readline()
Neste exemplo, a primeira linha seria lida e armazenada na variável linha_cabecalho, que poderia ser usada para verificar quais são os nomes das colunas. Se você não precisar ou não quiser fazer nada com essa linha, pode pular diretamente para a próxima:
next(arquivo_nomes)
Instruções da Atividade
Visão Geral
Pratique abrir arquivos e ler o conteúdo dentro deles.
Instruções
Para esta tarefa, você fará download do arquivo livros.txt, que contém os nomes dos livros do Livro de Mórmon e o salvará em seu computador.
Depois de salvar o arquivo em seu computador, abra no VS Code a pasta onde ele está e crie um novo arquivo Python (um script).
Faça com que seu programa abra o arquivo, leia-o linha por linha, retire os espaços em branco iniciais e finais e exiba cada livro na tela.
Veja abaixo o resultado esperado:
1 Néfi
2 Néfi
Livro de Jacó
Livro de Enos
Livro de Jarom
Livro de Ômni
Palavras de Mórmon
Livro de Mosias
Livro de Alma
Livro de Helamã
3 Néfi
4 Néfi
Livro de Mórmon
Livro de Éter
Livro de Morôni
Exemplo de Solução
Quando terminar seu programa, por favor, consulte o exemplo de solução para comparar sua abordagem com a apresentada.
Primeiro, trabalhe para concluir o programa sem consultar o exemplo de solução. Caso tenha trabalhado por um longo tempo e ainda enfrente dificuldades, sinta-se à vontade para usar o exemplo para ajudá-lo a finalizar seu programa.
Procedimento de Teste
Para este programa, não há nenhuma entrada do usuário, portanto, você não precisa testar valores diferentes. Em vez disso, simplesmente verifique se o seguinte funciona conforme descrito:
O arquivo livros.txt foi baixado e está salvo em seu computador.
Seu programa pode abrir o arquivo.
Seu programa lê uma linha do arquivo e a exibe na tela.
Seu programa percorre cada linha do arquivo e as exibe na tela.
Seu programa remove os caracteres “\n” no final de cada linha antes de exibi-los, para não produzir uma linha em branco entre cada linha exibida.
Envio de Tarefa
Quando você tiver concluído todas as atividades de aprendizagem desta semana, volte ao Canvas e responda ao respectivo questionário.
Próxima Atividade
- S06 - Atividade de Aprendizagem (2 de 2): Dados em Arquivos
Outros Links:
- Voltar para: Visão Geral da Semana | Página Inicial