Article image
Larissa Santana
Larissa Santana24/11/2023 22:14
Compartilhe

Um Guia Para Devs: Manipulação De Arquivos.txt

  • #Python

Olá, meu querido usuário!

Se você gosta de ver animes, filmes ou séries, você já deve ter visto algum personagem manipulando alguma coisa como objetos ou um dos quatro elementos da natureza, certo? Bom, na ficção eles manipulam essas coisas, mas na vida real manipulamos arquivos e esse vai ser o assunto de hoje.

O arquivo que iremos manipular hoje será um arquivo txt e a linguagem será Python, beleza? Vamos começar.

Abrir Um Arquivo

Para abrir um arquivo, precisamos de 3 coisas:

  1. Precisamos da função open();
  2. Precisamos do caminho do arquivo;
  3. Precisamos escolher qual modo usaremos nesse arquivo.

Pegando essas 3 coisas e misturando tudo, teremos como resultado (temporário) o seguinte:

open('caminho.txt', 'modo de uso')

Mas esse código funciona? Ainda não. Precisamos substituir alguns elementos aí.

Primeiro, eu preciso que você informe onde o seu arquivo está e qual é o nome dele. Caso o seu arquivo não exista, você vai informar em qual pasta ele vai ficar e qual será o nome dele,

Segundo, eu preciso que você informe o que deseja fazer com o arquivo, você quer ler? Escrever? Existem algumas opções, como essas:

image

Para entender como cada uma dessas letrinhas funciona, eu vou te mostrar um passo a passo do que cada uma faz e no final você terminará esse artigo fazendo seus próprios arquivos txt. Vamos lá!

Gerar Um Arquivo

Existem muitas formas de se gerar um arquivo, mas cada uma delas traz uma consequência diferente para o seu arquivo.

Gerando Um Arquivo Com 'x'

O primeiro modo que podemos usar é o modo 'x'. Com ele você consegue gerar um arquivo, mas se o seu arquivo já existir, você receberá uma mensagem de erro. Então, certifique-se de que o arquivo realmente não existe.

Para utilizar o 'x', usaremos a seguinte sintaxe:

image

Uma observação: para que o arquivo seja fechado, utilizaremos o close(). Ao final do artigo ele não será mais utilizado, mas por enquanto precisamos adicioná-lo no código, tá?

Gerando Um Arquivo Com 'w'

O segundo modo que podemos usar é o modo 'w'. Com ele você pode gerar um arquivo, caso o arquivo não exista. Entretanto, se o arquivo existir, o conteúdo dele será eliminado. Você também pode usar o 'w' para escrever no arquivo.

Para utilizar o 'w', usaremos a seguinte sintaxe:

image

Gerando Um Arquivo Com 'a'

O terceiro modo que podemos usar é o modo 'a'. Ele é semelhante ao 'w', a única diferença é que ele não apaga o conteúdo do arquivo. Ele também serve para escrever no arquivo, mas como dito anteriormente, ele não apaga o conteúdo, na verdade ele incrementa o conteúdo com um novo trecho.

Para utilizar o 'a', usaremos a seguinte sintaxe:

image

Escrever No Arquivo

Agora que conseguimos gerar um arquivo txt, precisamos escrever alguma coisa nele. Para fazer isso, utilizaremos o modo 'a' ou modo 'w' (sua preferência) junto com a função write() ou a função writelines().

Diferença entre write() e writelines()

Quando você opta por usar o write(), você consegue escrever um texto em uma String, mas quando você usa writelines(), você consegue utilizar uma lista no seu arquivo. Se tentar aplicar uma lista no write() você receberá uma mensagem de erro.

Quando utilizamos write(), nossa sintaxe fica assim:

image

Quando utilizamos writelines(), nossa sintaxe fica assim:

image

Ler Um Arquivo:

Para ler um arquivo txt, utilizamos o modo 'r' e algumas funções, como:

read(): lê o arquivo inteiro;

readline(): lê a primeira linha;

readlines(): lê o arquivo inteiro e retorna o texto em formato de lista.

Para verificarmos como cada uma dessas funções agem, iremos utilizar esse arquivo como base para ser lido:

image

Ler Arquivo Com read():

A nossa sintaxe será assim:

image

Nosso retorno será esse:

image

Ler Arquivo Com readline():

Como dito anteriormente, o readline() lê a primeira linha, portanto, apenas "Maçã" será exibida.

Nossa sintaxe será assim:

image

Nosso retorno será esse:

image

Ler Arquivo Com readlines():

Por fim, o readlines(). Essa função retornará nosso texto em forma de lista.

Nossa sintaxe será assim:

image

Nosso retorno será esse:

image

Modo De Uso: 'b', 't', e '+'

Já conseguimos abrir, ler e escrever no nosso arquivo. O que falta? Falta verificar os últimos modos e aprender a usar o '+' no nosso código.

Quando falamos do modo 'b', estamos falando do modo binário que trata outros tipos de arquivos. Um exemplo são arquivos de imagem.

Quando falamos do modo 't', estamos falando do modo texto que é o modo padrão. Portanto, se você não especificar um modo para abrir o seu arquivo, o Python abrirá o arquivo no modo texto.

Por fim, temos o '+' que é útil quando você quer fazer mais de uma ação no seu arquivo. Vou te mostrar.

Modo De Uso '+': Escrita e Leitura

Imagine que você quer escrever no seu arquivo e depois quer verificar o texto que foi inserido. Se você tentar fazer isso da forma que foi colocado na imagem abaixo, você receberá um erro.

image

Para que isso não ocorra, podemos utilizar o '+' junto da letra 'w'. Dessa forma, entende-se que iremos escrever no nosso arquivo e lê-lo em seguida.

image

Entretanto, se você fizer do jeito que fiz na imagem acima, você não conseguirá visualizar o texto que foi inserido no arquivo. O código não está incorreto, o problema é o seguinte:

Quando escrevemos no arquivo, o cursor se move para a direita até a última palavra ser adicionada. Depois que o texto que digitamos termina, o cursor permanece no final da última palavra escrita. Então, quando você chama a função read(), você não visualiza nenhuma informação, porque o cursor está no final da última palavra.

Para resolver isso, usaremos a função seek() com o paramêtro 0. Dessa forma, o cursos voltará para o início da primeira palavra e conseguiremos visualizar o texto.

Nossa sintaxe ficará dessa forma:

image

Boas Práticas:

Já conseguimos manipular nosso arquivo txt sem muitos problemas, mas esse artigo ainda não acabou. Falta mais um assunto (prometo que será o último tópico, aguenta firme).

De acordo com a documentação, é uma boa prática utilizar a palavra-chave "with" ao manipular arquivos. As vantagens são:

  • O arquivo será fechado corretamente;
  • Mais curto do que usar try-finally;
  • Não é necessário utilizar o comando close() no final.

Portanto, para que nosso código siga as boas práticas, precisamos adicionar algumas informações. Abaixo você verá o código no formato que usamos nesse artigo e na linha 8 o formato baseado nas boas práticas.

image

Se você olhou para esse código e pensou "Como eu vou me lembrar disso?" não se preocupa, eu vou te mostrar que é bem fácil de lembrar.

Primeiro você precisa lembrar que o 'with' vem primeiro, depois você adiciona o open() da mesma forma que você fazia antes, logo em seguida você adiciona o 'as'. Mas o que significa 'as'? Basicamente estamos falando de uma palavra que é usada para nomear coisas, no caso acima, estamos chamando de 'arquivo' todo o comando que veio antes do 'as'.

Se ficar confuso, relaxa. Preparei um exemplo aqui que vai te esclarecer tudo isso de uma vez por todas. Observe:

image

No módulo 'time' tem uma função chamada 'sleep' que eu "renomeei" como 'pausa', então quando eu quiser usar a função sleep no meu código, eu posso escrever pausa() sem problema algum. Percebe que ao utilizar o 'as' eu nomeei a instrução, que vem antes do 'as', de 'pausa'? É exatamente isso que está acontecendo naquele código onde foi usado o with. Fácil, não?

Bom usuário, esse foi o artigo de hoje. Espero que eu tenha conseguido ser o mais didática possível, espero que esse artigo tenha sido útil para você e espero que você tenha muito sucesso nos estudos.

Até o próximo artigo. Bye!

REFERÊNCIAS:

TREINAWEB

PYTHONACADEMY

COVILDODEV

HASHTAGTREINAMENTOS

STACKOVERFLOW

DOCS.PYTHON

ACERVOLIMA

Compartilhe
Comentários (4)
Larissa Santana
Larissa Santana - 26/11/2023 17:02

Olá, Leticia. Como vai?

Fico muito feliz que o artigo te ajudou. Espero que os próximos te ajudem também :)

Bons estudos!

Larissa Santana
Larissa Santana - 26/11/2023 17:00

Olá Belisnalva, tudo bem?

Obrigada, sempre que eu puder eu vou tentar criar mais artigos assim :)

LV

LETICIA VIANA - 25/11/2023 01:33

Eu simplesmente amei esse artigo. Realmente, mais didática que isso é impossível. Parabéns! Você transmite o conhecimento de uma forma surreal. Muito obrigada por compartilhar com a comunidade esse passo a passo, consegui tirar muitas dúvidas sobre o assunto somente com esse artigo impecável.

Belisnalva Jesus
Belisnalva Jesus - 24/11/2023 22:31

Olá Larissa, muito legal esses passo a passo!!

Parabéns pela sua iniciativa.