• Home »
  • Artigos »
  • Curso de programação em Python lição 14 – Leitura e escrita em ficheiros em Python

Curso de programação em Python lição 14 – Leitura e escrita em ficheiros em Python

Curso de programação em Python lição 14. Leitura e escrita em ficheirosEste artigo faz parte do curso de programação em Python do INFOmoz. Para acessar outras aulas do curso, por favor visite o índice do curso de programaçãoem Python .

Objetivos da aula:

  • Leitura e escrita em arquivos

Em Python como tudo é muito simples, a leitura e escrita em arquivos também não podiam deixar de ser. Se você já programou numa outra linguagem aposto que está aula vai lhe surpreender, se nunca programou, não se preocupe que a falta de surpresa também pode lhe surpreender rsrssrsr.Bem, antes de entrarmos para o contexto da aula, vamos ver um pouco da teoria e importância dos ficheiros de texto para um programa.Os programas que temos feitos até agora são literalmente inúteis, no bom sentido da palavra, você já pode notar isso, pois sempre que fechamos um programa os dados são perdidos e ao reiniciarmos, temos que reescrever todos os dados introduzidos anteriormente.Ai onde entram os ficheiros em programação: armazenar os dados que foram processados pelo programa para serem reutilizados por outro programa ou então pelo mesmo programa que o criou, para outros fins.Um exemplo clássico de uso de ficheiros, na área dos vídeo games, são os recordes( best time,etc.). Os recordes de um jogo realizados são guardados em um ficheiro para serem mostrados sempre que um jogo termina por exemplo.Agora indo para a pratica, em Python existe uma maneira muito simples de se manipular ficheiros de texto, que é o uso das funções open() e close() para abrir e fechar o ficheiro respectivamente.

A Função open(), abrir ficheiros em Python

Quando abrimos um ficheiro em Python( talvez em qualquer outra linguagem também, Java e Pascal por exemplo!) temos que indicar o que pretendemos com este ficheiro: escrever novos dados, ler os dados existentes ou acrescentar dados aos dados já existentes.Isto é indicado como segundo argumento da função open(), sendo o primeiro argumento o caminho para o ficheiro(arquivo).Veja a seguir algumas declaracões da função open:

arquivo=open(“dados.txt”,”w”) #abre o ficheiro dados.txt para escrita.

Se o ficheiro não existir, essa instrução ira criar um novo, se já existir, o seu conteúdo sera APAGADO e substituído pelo novo.

arquivo=open(“dados.txt”,”a”) #Abre o ficheiro dados.txt também para escrita.

Os dados introduzidos serão acrescentados aos já existentes. Se o ficheiro não existir retorna uma mensagem de erro.

arquivo=open(“dados.txt”,”r”) # Abre o ficheiro para leitura.

Se o ficheiro não existir retorna uma mensagem de erro.Note que se o ficheiro foi aberto para escrita não pode ser usado para leitura e vice versa.

Escrevendo em arquivos com Python

Para escrever dados em arquivos usando Python usamos a função pré-definida write().A função write recebe como argumento uma string e escreve essa string no arquivo.Veja um exemplo de utilizacao de write():

arquivo=open(“dados.txt”, “w”)nome=”Elisio Leonardo”<br />arquivo.write(nome)arquivo.close()

Um arquivo só é gravado com sucesso depois que se usa a funcao close() para fecha-lo. Tente fazer um programa sem close() para ver o resultado!!!Vá para o diretório onde você gravou a sua aplicação e veja o arquivo dados.txt criado!!!Podemos reabrir o arquivo e acrescentar mais alguma coisa:

outroarquivo=open(“dados.txt”, “a”)outroarquivo.write(“\n Curso de Programação em Python”)outroarquivo.close() #Nunca se esqueça de fechar o arquivo

Leitura de ficheiros em Python

Se quisermos carregar o conteúdo de um programa para o nosso ficheiro, usamos a as funções read(), readline() e readlines(). Read() retorna o arquivo todo como uma string. readline() retorna uma linha do arquivo e passa o cursor para a linha a seguir, isto significa que ao chamarmos readline outra vez ele retornara a linha seguinte. Readlines() retorna uma lista onde cada elemento é uma linha do arquivo.Vamos ver alguns exemplos de utilização destas funções:

arquivo=open(“dados.txt”,”r”)texto=arquivo.read() # Assim lemos todo o ficheiroprint(texto)

Ou usando readline:

arquivo=open(“dados.txt”, “r”)linha=arquivo.readline() # lemos a primeira linhawhile linha!=””:    print(linha) # Imprimimos a linha lida    linha=arquivo.readline() #E lemos a linha seguinte

Quando atingimos o fim do arquivo, a função retorna uma string vazia ”. Este é o sinal que nos irá indicar que já atingimos o fim do arquivo.Agora a minha função preferida: readlines()

arquivo=open(“dados.txt”, “r”)linhas=arquivo.readlines()for linha in linhas: #Cada elemento da lista é uma linha do ficheiro    print linha

Note que para a função open, poderíamos ter gravado o arquivo noutro diretório,bastando para isso indicar o caminho para o diretório, por ex:

arquivo=open(’C:\ Meus ficheiros\aula.txt’,'w’)

Antes de deixar ficar o ultimo programa da aula, vou levantar algumas questões sobre arquivos em Python:A função write() só vale para strings, e se quisermos trabalhar com objetos(veremos mais tarde o que são), dicionários, listas, tuplas?Até que dava para converter para string usando a função str, mas ao recarrega-lo para o programa já não seriam mais dos seus tipos mas sim strings!!! Para alterar isso existe em programação(Python também é claro) o conceito de serialização, que veremos mais tarde.Agora para terminar vou deixar um programa completo, que cadastra alunos duma escola e guarda num arquivo:

#Programa de cadastro de alunos#Criado por Elisio Leonardo# Curso de programacao em Python#INFOmoz 2009listanomes=[]listaidades=[]cont=1while cont==1:    nome=raw_input("Introduza o nome do aluno: ")    idade=int(input("E a sua idade"))    listanomes.append(nome)    listaidades.append(idade)    cont=int(input("Introduza 1 para continuar a cadastrar ou qualquer coidsa para parar"))arquivo=open("alunos.odt", "w")#Mude a extencao do ficheiro se quiseri=0for nome in listanomes:    arquivo.write(nome+" ")    arquivo.write(str(listaidades[i]))    arquivo.write("\n")    i=i+1arquivo.close()

Por hoje é tudo!!! Até a próxima aula. O tema da próxima aula será surpresa, mas garanto que você vai gostar!

Receba nossas actualizações por email

Ver Campanhas anteriores.

(Visited 664 times, 2 visits today)
Share