Portuguese (Português) translation by Jonathan Ramos (you can also view the original English article)
Se você olhar para a área de trabalho do seu computador, o que você vai encontrar? Arquivos espalhados por toda parte, certo? Eu sei que geralmente temos este mau hábito de ter uma área de trabalho desorganizada, mas o fato é que parece que lidamos com muitos arquivos.
Falando sobre Python, certamente é possível trabalhar com arquivos usando Python, e é isto que eu vou mostrar neste tutorial.
Abrindo um arquivo
O primeiro processo natural que temos que realizar para fazer qualquer operação sobre algum arquivo é abri-lo. Faça o download do arquivo Text.txt, que é o arquivo que vamos usar para conduzir nossas experiências.
Para abrir um arquivo usando Python, usaremos a função open(). Como mencionado na documentação:
open() retorna um objeto de arquivo e é mais comumente usado com dois argumentos: open (filename, mode)
Antes de tomar um exemplo, como mencionado acima, a função open()
levará dois argumentos: nome do arquivo e o modo. Esta forma de usar é muito semelhante ao stdio
's (do C, por exemplo) fopen()
. Filename é simplesmente o nome do arquivo que deseja abrir. Você também pode fornecer o caminho para o arquivo, se ele não estiver no diretório atual. E mode é uma string que indica como o arquivo vai ser aberto. Exemplos de modos diferentes são mostrados na tabela a seguir:
Descrição dos | modos |
r | Abre o arquivo de texto para leitura. O stream (fluxo de entrada ou saída) é posicionado no início do arquivo. |
r+ | Abre para leitura e escrita. O fluxo é posicionado no início do arquivo. |
w | Trunca o arquivo para zero ou cria um arquivo de texto para escrita. O stream é posicionado no início do arquivo. |
w+ | Abre para leitura e escrita. O arquivo é criado se ele não existir, caso contrário será sobreescrito. O stream é posicionado no início do arquivo. |
a | Abre para escrita. O arquivo é criado caso não exista. O stream é posicionado no final do arquivo. Gravações subsequentes do arquivo sempre vão acabar no fim do arquivo atual. |
a+ | Abre para leitura e escrita. O arquivo é criado se ele não existir. O stream é posicionado no final do arquivo. Gravações subsequentes no arquivo sempre vão acabar no fim do arquivo atual. |
Você também pode ver outros modos na documentação do Python.
Vamos seguir, agora abra o arquivo Text.txt. Isso pode ser feito simplesmente com uma única linha da seguinte maneira:
text_file = open('Text.txt')
Como você pode ver aqui, nós não especificamos o modo
. Para saber o modo padrão usado com open()
, digite print text_file
, nesse caso, você receberá o seguinte:
<open file 'Text.txt' mode 'r' at 0x10728c810>
Então, como você pode ver, o modo padrão é r
. Neste ponto você pode não ter percebido, mas acabamos de abrir um arquivo nesta etapa.
Lendo um arquivo
O arquivo é como uma caixa secreta. Nós Abrimos a caixa no passo anterior, e agora nós queremos ver o que há dentro. Ler um arquivo simples em Python pode ser feito usando o método read()
, dessa forma:
text_file.read()
Para ver a saída da instrução anterior, digite print text_file.read()
. Neste caso, o conteúdo (secreto) será revelado!
I'm enjoying learning about "file handling" in Python
Vá em frente e digite print text_file.read()
novamente, o que você vê? A saída foi uma string vazia. Isto é porque você já leu o arquivo inteiro, ao invés de ler uma linha por vez, ou seja, readline()
.
Escrevendo em um arquivo
Talvez você queira adicionar (escrever) outra frase ou parágrafo no arquivo que já lemos. Digamos que queria adicionar a seguinte frase: and I'm looking for more
. Isso pode ser feito em Python usando o método write()
, conforme a seguir:
text_file.write('and I\'m looking for more')
Oops, temos um erro aqui:
Traceback (most recent call last): File "test.py", line 2, in <module> text_file.write(' and I\'m looking for more') IOError: File not open for writing
Você já entendeu? Lembra quando abrimos o arquivo na primeira seção da seguinte maneira: open('Text.txt')
? Como não especificamos um modo
naquele exemplo , o modo (padrão) foi definido como r
. Isso nos permitirá apenas ler o arquivo, e neste exemplo estamos tentando gravar no arquivo. Então, vamos abrir o arquivo novamente, mas com o modo de gravação w
:
text_file = open('Text.txt', 'w')
Agora tente escrever a frase novamente, usando o código acima. Qual foi o resultado? Vamos usar open()
e print
read()
, conforme foi mostrado nas duas primeiras seções para ver o que está dentro do arquivo:
text_file = open('Text.txt','r') print text_file.read()
A saída desse script é:
and I'm looking for more
Você esperava ver a nova frase acompanhada da frase original I'm enjoying learning about "file handling" in Python
, não é? Então ela desapareceu? O modo w
parece sobreescrever o conteúdo do arquivo que está gravando. Se você está interessado em manter o texto original do documento, você pode usar o modo a
(acrescentar):
text_file = open('Text.txt','a') text_file.write(' and I\'m looking for more')
Neste caso, você deve obter o conteúdo esperado em Text. txt
:
I'm enjoying learning about "file handling" in Python and I'm looking for more.(Estou aprendendo sobre "manipulação de dados" com Python e quero saber mais)
Vamos colocar tudo o que aprendemos até agora junto:
with open('Text.txt', 'r+') as text_file: print 'The file content BEFORE writing content:' print text_file.read() text_file.write(' and I\'m looking for more') print 'The file content AFTER writing content:' text_file.seek(0) print text_file.read()
Temos algumas coisas novas aqui. Deixe-me esclarecê-las rapidamente. with...as
nos permite abrir o arquivo, processá-lo e certificar-se de que está fechado. seek()
, por outro lado, nos permite mover o ponteiro (ou seja, o cursor) para alguma outra parte do arquivo. seek(0)
, por exemplo, significa que o ponto de referência será o início do arquivo.
Vá em frente e execute o script e veja o que teremos de saída.
Fechando um arquivo
Ter o hábito de fechar um arquivo após a leitura ou escrita permitirá que você libere memória. Sim, o Python fecha automaticamente os arquivos depois que o script termina, mas se você não fizer isso de antemão, todos os arquivos abertos ocuparão espaço que o Python poderia usar. Fechar um arquivo pode ser facilmente realizado usando o método close()
.
Vamos usar este exemplo:
text_file = open('Text.txt','a+') print text_file.read() text_file.write(' and I\'m looking for more')
O que vai acontecer se nós fecharmos o arquivo após read()
? Ou seja, text_file.close()
. O Python, dará a seguinte exceção:
Traceback (most recent call last): File "test.py", line 4, in <module> text_file.write(' and I\'m looking for more') ValueError: I/O operation on closed file
Assim, concluímos que não podemos ler ou gravar em um arquivo fechado.
Conclusão
Isso é tudo para este tutorial. Já vimos como é fácil trabalhar com arquivos no Python através de algumas operações básicas que demonstramos.
Que outras operações você geralmente executa em arquivos usando Python?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Update me weeklyEnvato Tuts+ tutorials are translated into other languages by our community members—you can be involved too!
Translate this post