Uma coisa bem interessante em Python é a manipulação de arquivos, que é bastante simples. Vamos tomar como exemplo o arquivo 'texto.txt' :
>>> f = open( '/home/igor/texto.txt', 'w')
a função open possui três argumentos: nome do arquivo, modo e buffer, sendo os dois ultimos opcionais. No exemplo acima, eu usei o nome e o modo 'w'. Vamos falar um pouco sobre os possiveis modos:
Existem três tipos basicos de modos: 'w', 'r', 'a'. Write ('w') é usado para escrever algo no arquivo, apagando o que já havia nele, e caso o arquivo ainda não exista, ele será criado. Mas e se eu quiser apenas adicionar um texto sem apagar o que ja tinha la? Ai estamos falando no modo 'a' (append, pra quem conhece os metodos de listas isso deve ser familiar), agora todo o texto escrito será adicionado no final do que tinha anteriormente (lembrando que o texto inserido é no formato string, não tem nada a ver com listas), nesse caso, se o arquivo também não existir ele será criado sem problemas. E como era de se esperar, 'r' é usado para ler um arquivo já existente.
Mas ainda tem alguns modificadores de modos:
>>> f = open('/home/igor/texto.txt','r+')
quando um '+' é inserido no final de qualquer modo, ele possibilita tanto a leitura quanto a escrita.
>>> f = open('/home/igor/texto.txt','rb')
Esse 'b', adicionado ao lado de algum modo, manuseia o arquivo em binario, e não em texto, como é o padrão.
Caso não seja especificado nenhum modo na função open, sera atribuido 'r' (read), que é o padrão.
O terceiro argumento, também opcional é o buffer, caso seja 0 ou False, não haverá buffer, ou seja, toda vez que o arquivo for ser utilizado, ele será manuseado diretamente do disco rigido; ja se for 1 ou True, então haverá buffer, o arquivo será manuseado da memoria, o que deixa o processo mais rápido. Caso for declarado um numero maior que 1, esse numero indicara o nivel de buffer (em bytes).
Mas agora vamos ao que interessa, escrever:
>>> f = open('/home/igor/Python/texto','w')
>>> f.write('Ola Mundo!')
Como o modo padrão é texto, não é necessário a extensão .txt. Não podemos esquecer de fechar o arquivo:
>>> f.close()
Existem várias maneiras de ler o que está escrito, a basica é read()
>>> f = open('/home/igor/Python/texto', 'r')
>>> ler = f.read()
>>> f.close()
>>> print ler
Ola Mundo!
O metodo read() usado sem nenhum argumento, mostrará tudo que esta no aquivo, mas se quisermos ler apenas os tres primeiros caracters (bytes), podemos usar da seguinte maneira:
>>> f = open('/home/igor/Python/texto') #lembrando que o modo 'r' pode ser excluido pois e o padrao
>>> ler = f.read(3)
>>> print ler
Ola
Aqui apenas especificamos que so serão lidos os tres primeiros caracters (bytes), e caso queira ler o restante, o read() começará de onde parou
>>> restante = f.read()
>>> print restante
Mundo!
Agora vamos adicionar mais alguma coisa no nosso arquivo:
>>> f = open('/home/igor/Python/texto','a')
>>> f.write('\nOla Python')
>>> f.close()
Aqui usamos o 'a' (append), pra adicionar sem apagar o que ja havia no arquivo, e o '\n' é usado pra pular uma linha, lembrando que tudo é string. Agora vamos ver o resultado de outras maneiras:
>>> f = file('/home/igor/Python/texto', 'r')
>>> linha1 = f.readline()
>>> linha2 = f.readline()
>>> f.close()
>>> print linha1
Ola Mundo!
>>> print linha2
Ola Python
O readline() sem argumento, ira ler todo o conteudo de uma linha, porem é possivel dar um limite de caracters, assim como o read. linha1 guarda o conteudo da primeira linha, quando eu chamamos o readline() mais uma vez, ele vai começar a ler de onde tinha parado, ou seja, na segunda linha. Caso não tenha percebido, ao inves de open, usamos file, que da o mesmo resultado.
Pra quem é fã de lista (como eu), não poderia faltar um metodo que retornasse todo o conteudo do arquivo numa lista, e como tudo em Python, ele ja está pronto! É o readlines():
>>> f = open('/home/igor/Python/texto', 'r')
>>> ler = f.readlines()
>>> f.close()
>>> print ler
['Ola Mundo!\n', 'Ola Python']
Cada linha fica em um indice da lista, no formato de uma string.
Para verificar se o arquivo foi realmente fechado, basta digitar:
>>> f.closed
True
Bem...espero ter esclarecido um pouco sobre manipulação de arquivos em Python, alguma duvida, complementação ou correção, podem comentar ou mandar um email.
terça-feira, janeiro 09, 2007
Assinar:
Postar comentários (Atom)
8 comentários:
Muito bom!
Procurei muito um modo de escrever sem apagar e só encontrei aqui! :)
Muito obrigado amigo!
Adicionei o seu blog aos meus feeds. Estou começando a estuda python e suas dicas cairam como uma luva :)
graças a si consegui ler por linhas. andavam a dizer k tinham k fazer ciclos.. e ir ao /n .. assim basta ler pra uma lista e pedir o indice. Boa sorte com o resto:)
mando bem !! ajudou bastante ,,,
Ola, bacana essa matéria, mas como seria se eu quisesse remover uma terminada linha através de um campo input ?
Abraços.
Muito Bom..Parabéns..
Olá Igor !
Este teu blog ainda está ativo?
Precisava de uma ajuda tua para o meu trabalho de python na faculdade. Tem um ficheiro fasta !
Oi anasofia,
Esse blog não está mais ativo, agora eu tenho o http://igorsobreira.com.
Postar um comentário