Академический Документы
Профессиональный Документы
Культура Документы
À semelhança da maioria das linguagens de programação, o Python permite criar e usar ficheiros de dados
formatados como carateres. Isto significa que o conteúdo destes ficheiros é do tipo texto e, portanto, pode
ser visualizado em qualquer ferramenta que trabalhe com ficheiros de texto, por exemplo, o bloco de notas
do Windows, ou um editor de texto usado na programação (como o do Matlab, ou o do Spyder).
Como sabemos, os ficheiros são entidades que existem em memória secundária (os discos rígidos, ou os
SSD, por exemplo). Como também sabemos, os programas apenas conseguem aceder diretamente à
informação que esteja em objetos (variáveis, por exemplo) na memória principal (a RAM). Portanto, para
que os programas consigam aceder à informação guardada no disco é necessário copia-la previamente para
objetos que estejam na RAM.
abrir o ficheiro – cria um objeto na RAM que contém toda a informação acerca do ficheiro (por
exemplo: o nome do ficheiro e a sua localização no disco) que permita ao programa comunicar com
o sistema operativo para aceder ao ficheiro. Para isso, usamos a função open(). Exemplo:
fichalu = open("dados_alunos")
Esta operação criou um file object com o nome fichalu, que irá pemitir ao programa aceder ao
ficheiro que, no disco, tem o nome dados_alunos. Após a abertura do ficheiro, o programa passa a
usar apenas o objeto fichalu sempre que for necessário aceder ao ficheiro.
fechar o ficheiro – elimina o file object que foi criado ao abrir o ficheiro, fazendo com que o
programa deixe de poder aceder ao ficheiro. Para isso, invoca-se o método close() desse file object.
Exemplo:
fichalu.close()
O programador coloca uma instrução no programa, para fechar o ficheiro, quando o programa já não
vai precisar mais de aceder ao ficheiro. Esta operação é importante para libertar o espaço de
memória que estava ocupado pelo file object.
ler dados do ficheiro – depois de aberto o ficheiro, podemos ler os dados nele contidos invocando
um método para leitura do file object que representa o ficheiro. Exemplo:
fichalu.read()
Este exemplo usou o método read(), que retorna a totalidade do conteúdo do o ficheiro numa
string.
Mas se o ficheiro for muito grande, ler todo o seu conteúdo para uma string pode esgotar a memória
que o sistema operativo reservou para o programa. Para evitar esse problema podemos especificar
quantos carateres queremos que sejam lidos. Exemplo:
fichalu.read(30)
Neste exemplo a string retornada pelo método read() já conterá apenas 30 carateres.
Também é frequente usar-se o método que permite ler uma linha de cada vez. Exemplo:
fichalu.readline()
Esta operação retorna uma string contendo uma linha do ficheiro, terminada com um carater de
fim-de-linha (\n).
Para além dos métodos read() e readline() existe também o método readlines(). Este método
retorna uma lista de strings. Estas strings são equivalentes às que seriam obtidas lendo todo o
ficheiro com invocações sucessivas do método readline().
Sempre que é executada uma operação de leitura dum ficheiro, o seu file object não se esquece de
qual é o próximo caráter a ler numa próxima operação de leitura. Pode verificar isso executando
várias operações de leitura consecutivas. Experimente:
fichalu.read(5)
fichalu.read(5)
fichalu.read(5)
Pode saber qual é o número do próximo caráter a ser lido usando o método tell(). Experimente:
fichalu.tell()
Depois de já ter sido lido todo o conteúdo dum ficheiro, a execução de outra operação de leitura
(com qualquer destes métodos) retorna a string vazia ("").
Pode posicionar o cursor do file object num dado caráter, usando o método seek(). Experimente:
fichalu.seek(10)
fichalu.read(5)
Se pretender voltar a ler a partir do início do ficheiro, pode usar seek(0). Alternativamente, pode
fecar o ficheiro e voltar a abri-lo.