Thursday, August 24, 2006

Python - Brincando com arquivos

Manipulação de arquivos em Python:

Para manipular arquivos em Python, utilizamos a função open.
A função open é muito utilizada, e por isso resolvi documentar neste artigo.

Irei descrever de maneira simples e objetiva, como utilizar essa excelente função do Python.

Obs.: Neste e em outros artigos que eu escrevi a formatação do texto possui os seguintes significados:

- O texto em Negrito assume que se trata de um comando que deve ser digitado.
- O texto em Itálico significa que é a saída de um comando ou conteúdo de um arquivo.
- O ">>>" significa que você deve digitar no interpretador do Python.
- O "#" significa que o comando dever ser executado como usuário "root".
- O "$" significa que o comando deve ser executado como usuário sem privilégios
.

Para trabalhar com arquivos em Python, é necessário primeiro "abrir" o arquivo, "ler" ou "escrever" nele e finalmente "fecha-lô". A ordem descrita anteriormente deve ser seguida.

Abaixo irei demostrar esses 4 passos:

- Visão geral:

A função open permite criar novos arquivos, abrir arquivos existentes, como leitura ou escrita.
E possui a seguinte sintexe:

variavel = open("file", "modo")

Onde:
variavel = Nome da variável que você que vai receber o conteúdo da função open ( receber o arquivo propriamente dito ).
file = Nome do arquivo que você quer ler ou escrever.
modo = Indica o que você quer fazer com o arquivo, seja ler "r" (read) ou escrever "w" (write).

Exemplo na prática:

>>> var_file = open("arquivo.txt","w")
>>> print var_file
>>> type(var_file)

O que eu fiz ?

1 - Criei o arquivo.txt como modo escrita.
2 - Pedi para exibir o endereço que o arquivo se encontra em memória RAM. ( Opcional )
3 - Verifiquei o tipo da variável "var_file" com a função type(). ( Opcional )

Obs.: Se o arquivo "arquivo.txt" já existisse, ele seria aberto como modo escrita. Como em nosso exemplo ele não existia, então ele foi criado como um novo arquivo.

Como Python é uma linguagem orientada a objetos, agora a variável "var_file" é um objeto, e podemos acessar os metodos desse objeto que são os seguintes:

* read(): Retorna uma string única com todo o conteúdo do arquivo.
* readline(): Retorna a próxima linha do arquivo, e incrementa a posição atual.
* readlines(): Retorna todo o conteúdo do arquivo em uma lista, uma linha do arquivo por elemento da lista.
* write(data): Escreve a string data para o arquivo, na posição atual ou ao final do arquivo, dependendo do modo de abertura. Esta função falha se o arquivo foi aberto com modo "r".
* seek(n): Muda a posição atual do arquivo para o valor indicado em n.
* close(): Fecha o arquivo. Sempre utilizado no final da manipulação do arquivo.

- Escrevendo em um arquivo:

Abaixo está um exemplo de como escrever uma frase em um arquivo utilizando metodo write():

>>> var_file.write("Este texto sera' inserido no novo arquivo que acabamos de criar. Atraves do metodo write do objeto var_file que acabamos de criar\n")


Obs.: O "\n" no final serve para inserir quebra de linha no final do texto, como em outras linguagens.

Após ter escrito no arquivo, através do metodo write(), é necessário fechar o arquivo como o metodo close(), veja um exemplo abaixo:

>>> var_file.close()

Após isso saia do interpletador do Python, precionando Ctrl+d e visualize o arquivo "arquivo.txt"
como no exemplo abaixo:

roberto@roberto-desktop:~$ cat arquivo.txt
Este texto sera' inserido no novo arquivo que acabamos de criar. Atraves do metodo write do objeto var_file que acabamos de criar

O conteúdo do arquivo poderia ser uma string de uma variável ou qualquer outra coisa.
Exemplo:

>>> texto = "Este texto da string será inserido no arquivo arquivo.txt atraves do metodo write, da funcao open\n."
>>> var_file = open("arquivo.txt","w")
>>> conteudo_texto = var_file.write(texto)
>>> var_file.close()

Agora vamos visualizar o arquivo:

roberto@roberto-desktop:~$ cat arquivo.txt
Este texto da string será inserido no arquivo arquivo.txt atraves do metodo write, da funcao open.

- Lendo um arquivo:

Agora que aprendemos como criar e gravar em arquivos vamos ler um arquivo:

O metodo para ler arquivos é read(), como visto acima.
Então vamos ao exemplo na prática:

O arquivo: info.txt será lido pelo motodo read().
Vamos primeiro ver o conteúdo do arquivo, no shell mesmo:

roberto@roberto-desktop:~$ cat info.txt
Este é um texto de exemplo... Poderia ser qualquer arquivo texto.
Ele será lido pelo Python através do método read() da funcao open.
Python é uma linguagem muito organizada, vc aprende brincando... ehhehe

Obs.: O arquivo info.txt é um exemplo, mas você pode utilizar qualquer arquivo texto.

No interpletador do Python digite os seguintes comando para o nosso exemplo:

>>> f_texto = open("info.txt", "r")
>>> print f_texto
>>> type(f_texto)


O que eu fiz ?

1 - Abri o info.txt como modo leitura.
2 - Pedi para exibir o endereço que o arquivo se encontra em memória RAM. ( Opcional )
3 - Verifiquei o tipo da variável "info.txt" com a função type(). ( Opcional )

Exibindo o conteúdo do info.txt no python.
No interpletador do Python digite os seguintes comando para o nosso exemplo:

>>> conteudo_texto = f_texto.read()
>>> print conteudo_texto
Este é um texto de exemplo... Poderia ser qualquer arquivo texto.
Ele será lido pelo Python através do método read() da funcao open.
Python é uma linguagem muito organizada, vc aprende brincando... ehhehe

Olá só ! Agora o conteúdo do arquivo "info.txt" é uma variável, e você pode manipular da forma que você quiser ! Por isso que eu gosto da linguagem Python.

Não esqueça que após "brincar" com o arquivo é necessário fechar o arquivo, então digite o comando:

>>> f_texto.close()

Pronto !

Dica.: Você pode utilizar todos os metodos descritos acima, mas nesses dois exemplos, demostrei como utilizar o metodo write() e read(), pesquise sobre os outros metodos disponíveis e tente utilizá-los.

Referência:
Python na prática
Como pensar em Python


Recursos:
Site oficial do Python
Comunidade Brasileira

11 Comments:

At 11:19 AM, Blogger andrea said...

ciao, bel blog... passa sul mio e lascia un commento
andrea (italia)

 
At 11:07 AM, Blogger Pedro said...

Belo documento, parabéns.

 
At 8:04 AM, Blogger Vander F. Fernandes said...

Muito interessante este teu post, ideal para quem esta começando a programar!
E eu estou com uma grande dificuldade em um script em python, eu precisava criar um terminal linux com rdesktop e achei o script prontinho, fiz algumas alterações, tais como a linha do rdesktop e consegui alterar o programa que gera a tela de fundo e coloquei uma imagem.
Mais eu queria fazer mais uma alteração no mesmo, deixar a janela transparente ou com cores. Se quizer te passo o script por e-mail e o tutorial.
Agradeço a atenção!

 
At 11:18 AM, Blogger Down-Win said...

Cara! tava procurando isso faz tempo! vlw msmo.. muito bom este post.

 
At 7:03 AM, Blogger Fonseca said...

olá. muito bom esse seu blog.
olha como posso escrever num ficheiro txt uma variável que vai sendo alterada dentro de um ciclo for?

 
At 8:48 PM, Blogger guipsa said...

Pessoal estou com um desafio.
tenho um arquivo onde eu leio 13 carateres em um arquivo txt. Porém o valor deveria aparecer 1,30 mas aparece só 130,00.
Alguem conhece alguma função que trata isso?

 
At 4:16 PM, Blogger Lucas Antonio said...

Os programas que geram senha geralmente sorteiam uma determinada quantidade de caracteres, produzindo senhas difíceis de se lembrar. Implemente um programa que gera senhas fáceis de lembrar, usando a estratégia a seguir.

Um conjunto de adjetivos e substantivos curtos de 4 ou 5 letras ficará armazenado em arquivos separados. O programa sorteia um substantivo, um adjetivo e um número de dois ou três dígitos para formar uma senha. O programa não pode gerar senhas em que o substantivo não concordam em gênero. Exemplos: "pentefino52" é uma senha válida e "facaalto29" não é. Cuidado para não colocar nomes completos de arquivo no código, o que atrapalharia a portabilidade do programa.

Preciso fazer esse programa em python, você poderia me ajudar?

 
At 1:13 PM, Blogger rodolfomssouza said...

E como eu faria para números??
Ou seja, eu tenho um arquivo com dados numéricos e preciso atribuir variáveis a estes em seguida fazer operações matemáticas.

 
At 7:52 AM, Blogger fdasfdf said...

Bom dia
Tem uma função para comparar o conteúdo dos arquivos?
por exemplo
arq1=open("arq","r")
arq2=open("arq2","r")
var = compara(arq1,arq2)

sendo q o var vai contar a diferença entre um e outro?
Obrigado

 
At 1:25 PM, Blogger Autovaloria said...

Muito interessante!
Para quem tem duvidas como manipular arquivos em memoria essa artigo pode ajudar.
https://medium.com/@felipetoffoli/lidando-com-arquivos-de-memória-no-python-3-dac6c6fd7923

 
At 1:25 PM, Blogger Autovaloria said...

This comment has been removed by the author.

 

Post a Comment

<< Home