Você está na página 1de 20

PENSAMENTO

COMPUTACIONAL

Fernando Esquírio Torres


Gravação de arquivos
em Python
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:

„„ Descrever a gravação de arquivos no formato .txt nos diferentes modos


de abertura do arquivo.
„„ Definir a gravação de arquivos no formato .csv nos diferentes modos
de abertura do arquivo.
„„ Gravar arquivos em diferentes problemas computacionais.

Introdução
Nem sempre os dados inseridos em um programa são digitados no
teclado e os resultados do processamento desses dados são exibidos
na tela do computador. Normalmente, em aplicações reais, os dados
fornecidos a um programa e gerados por ele são provenientes de um
arquivo. A utilização de arquivos para armazenar dados possui diversas
vantagens, como a facilidade de compartilhamento com outras pessoas, a
segurança das informações do seu conteúdo, a padronização do formato
da informação arquivada e a possibilidade de armazenar os dados na
nuvem. Por isso, toda linguagem de programação contém comandos
que permitem realizar operações com arquivos.
Para garantir mais segurança, padronização e organização nos sistemas
de armazenamento, o sistema operacional do computador é responsável
pelo gerenciamento do armazenamento de arquivos. Assim, as operações
realizadas pelos comandos e recursos das linguagens de programação
não fazem nenhum acesso físico a um arquivo — o acesso fica por conta
das funções que fazem parte do sistema operacional, conforme leciona
Banin (2018). Existem diversos tipos de arquivos no computador, como
documentos de texto, planilhas, imagens, áudios, vídeos, entre outros.
2 Gravação de arquivos em Python

Neste capítulo, você vai estudar como a linguagem de programação


Python faz a gravação de arquivos no formato de texto (.txt) e separados
por vírgula (.csv). Por fim, você vai verificar como utilizar a gravação de
arquivos em diferentes problemas computacionais.

Gravação de arquivos no formato texto (.txt)


Segundo Perkovic (2016), os arquivos de texto são uma sequência de carac-
teres que utilizam algum tipo de codificação, como ASCII, utf-8, entre outros.
Esses arquivos podem ser abertos, editados e salvos por um editor de texto
básico, como o Bloco de Notas, o Notepad++, o Sublime, entre outros. Esses
softwares serão úteis para conferir o conteúdo armazenado nos arquivos de
texto após a execução dos comandos da linguagem Python.
Na linguagem Python, antes de armazenar qualquer informação em um
arquivo de texto, é necessário abrir o arquivo (open); então, deve-se gravar
o dado desejado e fechar o arquivo, após terminar de utilizá-lo. A seguir,
você vai estudar os métodos da linguagem Python usados para trabalhar com
gravação de dados nos arquivos de texto.

Método open()
O método open() é a função-chave para trabalhar com arquivos na linguagem
Python. Ele serve para abrir o arquivo indicando o modo de acesso. Segundo
Ramalho (2015), a sintaxe da função open é:

open('arquivo', 'modo _ de _ abertura')

onde os parâmetros são os seguintes.

„„ arquivo (necessário): nome do arquivo que será aberto. Esse nome deve
ser especificado pelo endereço completo do arquivo (diretório+nome
do arquivo+extensão).
„„ modo _ de _ abertura (necessário): operação que será executada.
As operações básicas são:
■■ 'r': read (leitura) — valor padrão. Abre um arquivo para leitura e
posiciona o cursor no início do arquivo.
Gravação de arquivos em Python 3

■■ 'w': write (escrita). Abre um arquivo para escrita (caso o arquivo


não exista, ele será criado) e posiciona o cursor no início do arquivo.
■■ 'a': append (acrescentar). Abre um arquivo para acrescentar algum
dado e posiciona o cursor no fim do arquivo.
■■ 'x': create (criar). Cria um arquivo específico, retorna erro se o
arquivo já existe e posiciona o cursor no fim do arquivo.

Segundo Barry (2018), o primeiro parâmetro do método open() permite


a você colocar o nome+extensão ou, então, o caminho completo do arquivo,
com diretório+nome+extensão. No primeiro caso, nome+extensão, o comando
open() entende que o arquivo está no mesmo diretório que o arquivo com o
código-fonte (arquivo com extensão .py). No segundo parâmetro do método
open(), você pode completar o modo de abertura com os valores 't', de
arquivo texto, valor padrão, ou 'b', de arquivo binário (não será tratado aqui,
pois não é o foco deste capítulo).
Segundo Borges (2014), na linguagem de programação Python, sempre que
você usar o comando open() para abrir um arquivo, você deverá instanciá-lo
a um objeto, conforme o comando a seguir:

arq = open('teste.txt', 'w')

No comando anterior, o objeto arq representa o arquivo aberto, no exemplo


“teste.txt”, para realizar a operação de gravação de dados (w — write).

Método close()
O método close() é usado para fechar o arquivo que foi aberto anteriormente
com a função open(), terminando de usá-lo. Caso o arquivo tenha sido aberto
para gravação de dados, esse método também descarrega o buffer. Segundo
Ramalho (2015), a sintaxe da função close é:

file.close()

onde file é o nome do objeto que foi instanciado ao abrir o arquivo com
a função open().
4 Gravação de arquivos em Python

Você deverá fechar o arquivo, utilizando a função close(), sempre que tiver terminado
de realizar as operações desejadas nele. Caso contrário, o arquivo vai continuar como
um objeto usado pelo Python e, ao tentar abri-lo, você verá os dados que acabaram
de ser escritos. E, caso você queira deletar ou mover esse arquivo no seu HD, o sistema
operacional exibirá uma mensagem de violação de compartilhamento, conforme
leciona Downey (2016).

Método write()
O método write(byte) escreve um texto específico (string de caracteres)
no arquivo de texto. Segundo Ramalho (2015), a sintaxe da função write é:

file.write(byte)

onde file é o nome do objeto que foi instanciado ao abrir o arquivo com
a função open(), e o parâmetro byte é o texto que será gravado no arquivo.

Método writelines()
O método writelines(sequence) escreve no arquivo de texto uma se-
quência de strings contidas em uma lista. Segundo Ramalho (2015), a sintaxe
da função writelines é:

file.writelines(sequence)

onde file é o nome do objeto que foi instanciado ao abrir o arquivo com
a função open(), e o parâmetro sequence é uma sequência de strings
contidas em uma lista.
Gravação de arquivos em Python 5

Método seek()
O método seek(position) posiciona o cursor no N-ésimo caractere contado
a partir do início do arquivo. Segundo Ramalho (2015), a sintaxe da função
seek é:

file.seek(position)

onde file é o nome do objeto que foi instanciado ao abrir o arquivo com
a função open(), e o parâmetro position é um valor numérico para indicar
a posição do cursor.

Programas exemplos de gravação em arquivos de texto


A Figura 1 mostra um código para gravar strings em duas linhas de um arquivo
de texto utilizando alguns dos métodos citados anteriormente.

Figura 1. Código para a gravação de duas mensagens de texto em um arquivo.

O código da Figura 1 contém a função open('teste.txt','w'), uti-


lizada para abrir o arquivo “teste.txt” e realizar uma operação de escrita de
dados (w — write). Nesse comando, o arquivo é instanciado no objeto arq.
Como não foi especificado o caminho do arquivo, ele será criado no mesmo
diretório do seu arquivo-fonte. Caso o arquivo não exista, a função open()
vai criá-lo; se o arquivo existir, ele será aberto e seu conteúdo será apagado
para gravar os novos dados.
Na linha 4 da Figura 1, o método write() escreve a mensagem 'Texto
da primeira linha' no início do arquivo de texto. Observe que é ne-
cessário colocar o código da sequência de escape '\n' para quebrar a linha e
posicionar o cursor no início da mesma. Em seguida, na linha 6 da Figura 1, o
6 Gravação de arquivos em Python

método write() escreve a mensagem 'Texto da segunda li-


nha' na segunda linha do arquivo. Por fim, na linha 8 da Figura 1, o método
close() fecha o arquivo.
Ao abrir o arquivo “teste.txt” em um editor de texto, é possível visualizar
o resultado da execução do código mostrado nesse exemplo (Figura 2).

Figura 2. Arquivo “teste.txt” com os dados gravados.

O segundo exemplo, apresentado na Figura 3, mostra um código para


acrescentar uma nova string no arquivo “teste.txt” criado no primeiro exemplo.
Os novos dados serão inseridos sem apagar o conteúdo do arquivo.

Figura 3. Código para acrescentar dados em um arquivo.

O código da Figura 3 contém a função open('teste.txt','a'), utilizada


para abrir o arquivo “teste.txt” e acrescentar dados (a — append) a partir
do fim do arquivo. Nesse comando, o arquivo é instanciado no objeto arq.
Gravação de arquivos em Python 7

Na linha 13 da Figura 3, o método write() escreve a nova mensagem


no arquivo de texto. Observe que é necessário colocar o código da sequência
de escape '\n' no início da mensagem, para quebrar a linha e posicionar o
cursor no início da mesma, pois, do contrário, a mensagem vai ser gravada
unida com a segunda linha do arquivo. Por fim, na linha 15 da Figura 3, o
método close() fecha o arquivo.
Ao abrir o arquivo “teste.txt” em um editor de texto, é possível visualizar
o resultado da execução do código mostrado nesse exemplo (Figura 4).

Figura 4. Arquivo “teste.txt” com a nova linha inserida.

O terceiro exemplo, apresentado na Figura 5, mostra um código para gravar


uma lista contendo duas strings em um arquivo de texto.

Figura 5. Código para a gravação de listas em um arquivo.

O código da Figura 5 contém a variável msg, que é uma lista. Na linha 4


da Figura 5, o método writelines() escreve o conteúdo do objeto msg no
arquivo de texto. As duas strings serão escritas na mesma linha; caso você
deseje escrever em mais de uma linha, deverá inserir o código de quebra de
linha '\n'.
8 Gravação de arquivos em Python

Ao abrir o arquivo “lista.txt” em um editor de texto, é possível visualizar


o resultado da execução do código mostrado nesse exemplo (Figura 6).

Figura 6. Arquivo gerado com os dados gravados.

O quarto exemplo (Figura 7) mostra um código para gravar um dado em


arquivo colocando o cursor em uma posição específica.

Figura 7. Código que utiliza o método seek().

Na linha 4 da Figura 7, o método write() escreve a mensagem 'Oi,


tudo bom?' no início do arquivo de texto. Na linha 6, o comando arq.
seek() posiciona o cursor no quarto caractere, após o espaço depois da
vírgula. Em seguida, na linha 8, o método write() escreve a mensagem
'PREZADO ALUNO!' a partir da posição atual do cursor, sobrescrevendo
os dados que possam existir.
Gravação de arquivos em Python 9

Ao abrir o arquivo “cursor.txt” em um editor de texto, é possível visualizar


o resultado da execução do código mostrado nesse exemplo (Figura 8).

Figura 8. Arquivo gerado com os dados gravados.

O quinto exemplo (Figura 9) mostra um código utilizando o comando


print() para gravar uma mensagem em arquivo.

Figura 9. Código que utiliza o método seek().

Na linha 4 da Figura 9, o método print() escreve a mensagem 'Exemplo


com o comando print.' no início do arquivo de texto. Observe que o
parâmetro file do comando print() indica o objeto, no caso, o arquivo em
que a mensagem será armazenada. Outro ponto importante a ser observado
é que não é necessário colocar o código de sequência de escape '\n' para
imprimir a próxima linha. Isso porque o comando print() já insere a quebra
de linha ao final da impressão.
Ao abrir o arquivo “python.txt” em um editor de texto, é possível visualizar
o resultado da execução do código mostrado nesse exemplo (Figura 10).
10 Gravação de arquivos em Python

Figura 10. Arquivo gerado com os dados gravados.

Declaração with para abrir arquivos em Python


Como já visto anteriormente, em Python, você precisa ter acesso a um arquivo
antes de abri-lo ou realizar qualquer operação nele. Esse acesso é dado pelo
método open(). Nos primeiros exemplos, usamos a sintaxe arq = open
('nome _ do _ arquivo', 'modo _ de _ abertura') para instanciar
o arquivo ao objeto, nesse caso com o nome de arq. Porém, existe outra forma
de realizar essa ação: utilizando a declaração with.
Segundo Ramalho (2015), quando utiliza a declaração with, você obtém
melhor sintaxe e facilidade para lidar com as exceções. Além disso, a declaração
with fecha automaticamente o arquivo ao terminar de usá-lo. A sintaxe da
declaração with é:

with open('nome _ do _ arquivo', 'modo _ de _ abertura')


as file:

Sendo assim, é possível reescrever o primeiro exemplo apresentado na Figura 1


utilizando a declaração with. O código reformulado é mostrado na Figura 11.

Figura 11. Arquivo gerado com os dados gravados.


Gravação de arquivos em Python 11

O código da Figura 11 mostra a declaração with utilizada para abrir


arquivos em Python. Observe que a indentação indica o código que faz parte
do comando with. A partir da linha 7, o arquivo de texto é fechado, e os
comandos seguintes não pertencem ao bloco de instruções.

Gravação de arquivos no formato CSV


A extensão .csv (comma-separated value) representa um tipo de arquivo
que armazena dados listados em tabela separados por vírgulas. Esse tipo de
formatação é utilizado para facilitar a importação/exportação de dados de um
programa para outro. Por exemplo, você pode exportar os seus contatos do
Google em um arquivo CSV e importá-los em outra conta de e-mail, conforme
exemplifica Matthes (2016). Assim, esses arquivos são a maneira mais comum
para importar e exportar planilhas e bancos de dados. Os arquivos CSV podem
ser gerados por softwares de planilhas, como o Microsoft Excel, e ser abertos
por qualquer programa de edição de texto, como o Bloco de Notas.
A linguagem Python fornece métodos simples e de fácil entendimento
para manipular arquivos do tipo CSV, possibilitando ler e gravar dados nesses
arquivos. Os métodos open() e close() funcionam como descrito na seção
de arquivos de texto. A seguir, você verá os métodos da linguagem Python
usados, exclusivamente, para trabalhar com gravação de dados nos arquivos
CSV.

Método writer()
O método writer(csvfile, dialect='excel', **fmtparams)
cria um objeto writer, que permite escrever as linhas do arquivo CSV,
formatando a sequência de valores inserida no mesmo. Segundo Ramalho
(2015), a sintaxe da função writer é:

writer(csvfile, dialect='excel', **fmtparams)

onde os parâmetros são os seguintes.

„„ csvfile (necessário): nome do objeto instanciado com o arquivo.


„„ dialect (opcional): define o conjunto de parâmetros específicos a
um dialeto CSV em particular.
12 Gravação de arquivos em Python

„„ fmtparams (opcional): pode ser usado para sobrescrever parâmetros


formatados.

Segundo Ramalho (2015), na linguagem de programação Python, sempre


que você usar o comando writer(), você deverá instanciá-lo a um objeto,
conforme o comando a seguir:

teste = csv.writer(arq)

Método writerows()
O método writerows(data) permite escrever todos os elementos do parâ-
metro data. Segundo Ramalho (2015), a sintaxe da função writer é:

writerows(data)

onde os parâmetros são o seguinte.

„„ data (necessário): dados formatados que serão gravados em um arquivo.

Método DictWriter()
O método DictWriter() cria um objeto writer, mas mapeia o dicioná-
rio para as linhas de saída. Segundo Ramalho (2015), a sintaxe da função
writer é:

DictWriter(f, fieldnames, delimiter=';',


lineterminator='\n')

onde os parâmetros são os seguintes.

„„ f (necessário): nome do objeto instanciado com o arquivo.


„„ fieldnames (necessário): sequência de chaves indicando a ordem
dos valores do dicionário.
„„ delimiter (opcional): caractere de separação dos dados.
„„ lineterminator (opcional): caractere inserido no final de cada
linha.
Gravação de arquivos em Python 13

Programas exemplos de gravação em arquivos CSV


O primeiro exemplo (Figura 12) mostra um código para gravar dados forma-
tados em um arquivo do tipo CSV.

Figura 12. Código para a gravação em um arquivo do tipo CSV.

O código da Figura 12 contém o comando import csv, necessário para


importar a biblioteca que permite trabalhar com arquivos desse formato. Na
linha 4, temos o objeto com os dados a serem gravados no arquivo. A linha 7
possui o comando para abrir o arquivo e instanciá-lo no objeto arq. Na linha 8,
ocorre a conversão de um objeto com dados delimitados por strings, e a linha 9
escreve o dado no arquivo.
Ao abrir o arquivo “person.csv” em um editor de texto, é possível visualizar
o resultado da execução do código mostrado nesse exemplo (Figura 13).

Figura 13. Arquivo “person.csv” com os dados gravados.


14 Gravação de arquivos em Python

Aplicação prática utilizando gravação de


arquivos
Em aplicações reais, os dados gerados por um programa são gravados em
arquivos, o que facilita realizar leituras futuras, criar gráficos, fazer análises
e extrair informações relevantes desses dados armazenados. Nesse contexto, é
possível citar dois exemplos em que existe a necessidade de armazenar dados
em arquivos: o primeiro é consultar o índice de capitalização de uma empresa,
e o segundo é fazer Web scraping para salvar dados em uma página da internet.

Exemplo 1: índice de capitalização


O índice de capitalização é um indicador estrutural público, que mostra a proporção
de capitais próprios em relação aos ativos totais da empresa, medindo, assim, a
relação entre o patrimônio líquido e o total de recursos captados junto ao público,
inclusive os fundos de investimento. Esse índice é útil para avaliar a segurança que
os recursos próprios oferecem ao capital de terceiros e a confiabilidade da empresa
em cumprir e sanar suas obrigações e contas, conforme leciona Mendes (2018).
Assim, é possível utilizar um programa na linguagem Python para consultar
o índice de capitalização de uma determinada empresa e armazenar esses
dados em um arquivo para realizar análises, tentar prever tendências, tomar
decisões para investimentos, etc. O código da Figura 14 mostra como fazer a
leitura do índice de capitalização da base de dados do Yahoo Finance (linha 2),
separar os dados que serão gravados no arquivo (linhas 9 a 12) e, então, gravar
em um arquivo CSV (linhas 14 a 19).

Figura 14. Programa para gravar o índice de capitalização em um arquivo.


Gravação de arquivos em Python 15

Exemplo 2: Web scraping


Web scraping é uma técnica que permite retirar os dados desejados de uma
página da Web e salvá-los em uma arquivo formatado, para que você possa
realizar suas análises de dados posteriormente. Essa técnica é muito neces-
sária em Data Science, pois, em alguns casos, os dados são disponibilizados
como parte de uma página Web e podem não estar disponíveis em arquivos
no formato .CSV, ou podem não permitir serem acessados por meio de APIs.

Segundo Slatkin (2018), API é um conjunto de rotinas e padrões de programação


utilizado para permitir o acesso a um aplicativo de software ou plataforma na Web.

Nesse contexto, a linguagem Python é amplamente usada para implementar


soluções que utilizam a técnica Web scraping. Para isso, é necessário desenvol-
ver um código usando a biblioteca BeautifulSoup do Python, que possibilita
buscar dados em páginas da internet, conforme leciona Slatkin (2018).
O código da Figura 15 mostra como implementar a técnica de Web scraping
na linguagem Python. Na linha 3 do código mostrado na Figura 15, tem-se o
comando para importar a biblioteca BeautifulSoup. Na linha 6, é possível
observar o endereço da página com a base de dados desejada (nomes de artistas
com a letra D). Na linha 9, é criado um objeto do tipo BeautifulSoup.
Nas linhas 11 e 12, o links inferiores são removidos por meio da classe Al-
phaNav e do método decompose(). Nas linhas 15 e 16, o arquivo para
salvar os dados é criado, e seu cabeçalho é adicionado. Nas linhas 18 e 19,
as informações completas dos artistas (nome, página, nacionalidade, etc.)
são salvas em uma variável (lista _ nomes _ artistas); em seguida,
as instâncias desejadas (nome e página) são separadas em outra variável
(itens _ lista _ nomes _ artistas). As linhas 21 até 26 fazem a
gravação dos dados no arquivo.
16 Gravação de arquivos em Python

Figura 15. Programa para realizar Web scraping em Data Science.

BANIN, S. L. Python 3: conceitos e aplicações: uma abordagem didática. São Paulo:


Érica, 2018, 264 p.
BARRY, P. Use a cabeça! Python. 2. ed. Rio de Janeiro: Alta Books, 2018, 616 p. (Série Use
a Cabeça/Head First).
BORGES, L. E. Python para desenvolvedores: aborda Python 3.3. São Paulo: Novatec,
2014. 320 p.
DOWNEY, A. B. Pense em Python: pense como um cientista da computação. São Paulo:
Novatec, 2016. 312 p.
MATTHES, E. Curso intensivo de Python: uma introdução prática e baseada em projetos
à programação. São Paulo: Novatec, 2016. 656 p.
MENDES, R. A. Fundos de investimento imobiliário: aspectos gerais e princípios de análise.
São Paulo: Novatec, 2018. 256 p.
PERKOVIC, L. Introdução à computação usando Python: um foco no desenvolvimento
de aplicações. Rio de Janeiro: LTC, 2016. 516 p.
RAMALHO, L. Python fluente. São Paulo: Novatec, 2015. 800 p.
SLATKIN, B. Python eficaz: 59 maneiras de programar melhor em Python. São Paulo:
Novatec, 2015. 296 p.
Gravação de arquivos em Python 17

Leitura recomendada
LABAKI, J. Alguns truques - manipulação de arquivos. In: LABAKI, J. Introdução a Python:
módulo A. Ilha Solteira: Departamento de Engenharia Mecânica, Universidade Estadual
Paulista “Júlio de Mesquita Filho”, 2004. p. 79–83. Disponível em: https://www.dcc.ufrj.
br/~fabiom/mab225/pythonbasico.pdf. Acesso em: 3 jun. 2019.

Você também pode gostar