Manipular arquivos pode ser uma boa maneira tanto de salvar informações que estão em sua aplicação em um arquivo externo como captar informações de um arquivo externo para colocá-las em sua aplicação. Uma forma bem fácil é salvar essas informações em um arquivo de texto. Para isso faremos uso das funções open, read e write e append. Vejamos o seguinte código:
arquivo = open("arquivo.txt", "w")
arquivo.write("Essa é a primeira linha escrita por nós. \n")
arquivo.write("Essa é a nossa segunda linha.")
arquivo.write("Essa deveria ser a terceira linha porém ainda é a segunda. \n")
arquivo.write("Essa sim é a terceira.")
arquivo.close()
Primeiramente atribuímos a função open a uma variável chamada arquivo. nessa função passamos dois parâmetros: O primeiro é o nome do arquivo e o segundo o modo como estamos abrindo esse arquivo. Utilizamos o w para fazer a escrita em um arquivo. Caso o arquivo não exista, nesse modo o código criará um arquivo com o nome escrito no primeiro parâmetro. Porém tome muito cuidado! Ao utilizar "w" em um arquivo já existente, ele reescreverá todo o conteúdo do arquivo, fazendo com que você perca todos os dados que estavam nele! Logo falo sobre o método close. Agora vamos ver o seguinte:
arquivo = open("arquivo.txt","r")
print arquivo.read()
arquivo.close()
Acima temos o nosso arquivo aberto em modo de leitura. A função read retorna todas as linhas ainda não lidas do nosso arquivo e ao printarmos na tela podemos ver que o resultado foi:
"Essa é a primeira linha escrita por nós.
Essa é a nossa segunda linha.Essa deveria ser a segunda linha porém ainda é a segunda
Essa sim é a terceira."
Caso o objetivo fosse ler apenas algumas linhas, poderíamos ter usado a função readline, que como o próprio nome já diz, lê linha por linha. Sempre que essa função é chamada ela retorna a linha atual e começa a apontar para o próximo.
É de extrema importância que você sempre se lembre de chamar a função close sempre que terminar de fazer alguma manipulação no arquivo de leitura ou escrita. Nunca abra o arquivo com a função open e depois o faça de novo sem antes fechar a instância anterior. Um dos motivos da necessidade do close é que se tentarmos escrever em um arquivo e não fecharmos depois de terminar a escrita, as informações não chegarão ao arquivo e nada será escrito!
Uma outra forma de manipular os arquivos usando a função open é a seguinte:
with open("arquivo.txt","r+") as arquivo:
arquivo.write("Estou escrevendo")
arquivo.readline()
Dessa forma, avisamos ao Python que a função open deve ser atribuída à variável arquivo. Repare que não precisamos chamar a função close, porque quando abrimos o arquivo dessa forma o próprio python fecha o arquivo após sairmos do método acima. Repare também que foi usado um modo novo, o "r+". o "+" significa que estamos abrindo o arquivo tanto para leitura como para escrita. Utilizando o "r+" para escrever começaremos a partir da primeira linha e caso exista algo escrito no arquivo, as linhas serão reescritas conforme formos escrevendo. A diferença para o "w+" é que mesmo que reescrevêssemos apenas a primeira linha, todo o arquivo seria reescrito. Uma forma de escrever no final do arquivo é abrindo ele no modo "a". Vejamos o exemplo:
with open("arquivo.txt","a+") as arquivo:
arquivo.append("Estou escrevendo sempre")
arquivo.append("no final do arquivo")
arquivo.read()
Usando a função append estaremos sempre escrevendo na ultima linha do arquivo, sem reescrever linha nenhuma!