Você está na página 1de 19

Aula 8 - Programação com Ficheiro de Texto

Programação

Informática Web
João Cordeiro
jpcc@ubi.pt

November 23, 2022

Programação (Informática Web) Aula 8 November 23, 2022 1 / 19


Aula 8 - Ficheiros de Texto

Sumário
O conceito de ficheiro como unidade de armazenamento de informação.
Ficheiros binários e ficheiros de texto. Manipulação de ficheiros de texto na
programação. Exemplos e exercícios com estruturas homogéneas e ficheiros
de texto.

Programação (Informática Web) Aula 8 November 23, 2022 2 / 19


Ficheiros / Ficheiro de Texto

Ficheiro
Uma ficheiro é uma entidade que representa um agregado de informação
binária (ficheiro binário) que se encontra armazenada num suporte não
volátil.

Ficheiro de Texto
É um ficheiro binário com informação textual, representada nalguma codifi-
cação padrão, e.g., ASCII, UTF-8, ISO-8859-1, ...

+ Os ficheiros são elementos essenciais em qualquer programa, permitindo-


nos armazenar informação, podendo ser processada no futuro, até por
outros programas, e consultada directamente pelos utilizadores.

Programação (Informática Web) Aula 8 November 23, 2022 3 / 19


Ficheiros / Ficheiro de Texto

Ficheiro de Texto
É um ficheiro binário com informação textual, representada nalguma codifi-
cação padrão, e.g., ASCII, UTF-8, ISO-8859-1, ...

+ No Python existem mecanismos para aceder à informação de um ficheiro,


armazenado no Sistema Operativo. Por exemplo, para a leitura de um
ficheiro de dados importante para a realização do processamento.
+ Existem também mecanismos de criação de novos ficheiros, eventual-
mente com informação produzida pelo programa.
+ Quer seja para leitura ou escrita de ficheiros, estes também são repre-
sentados no programa através de uma variável.
+ A abertura de um ficheiro é realizada através da função:

open(fichnome:str, modo:str, encoding:str)

Programação (Informática Web) Aula 8 November 23, 2022 4 / 19


Ficheiros / Ficheiro de Texto

A abertura de um ficheiro é realizada através da função:

open(fichnome:str, modo:str, encoding:str)

+ O fichnome representa o caminho completo para o ficheiro.


+ O modo permite definir se a abertura é de leitura ("r") escrita ("w"),
ou de leitura e escrita ("a").
+ O encoding permite definir qual a codificação de caracteres usada.
+ Esta função devolve o referenciador (variável) de ficheiro.

Alguns exemplos:
1 f = open ( " texto . txt " , " r " )
2 f = open ( " texto . txt " , " r " , " utf8 " )
3 f = open ( " texto . txt " , " r " , encoding = " utf8 " )

Programação (Informática Web) Aula 8 November 23, 2022 5 / 19


Ficheiros / Ficheiro de Texto

A abertura de um ficheiro é realizada através da função:

open(fichnome:str, modo:str, encoding:str)

Alguns exemplos:
1 f = open ( " texto . txt " , " r " )
2 f = open ( " texto . txt " , " r " , " utf8 " )
3 f = open ( " texto . txt " , " r " , encoding = " utf8 " )
4
5 f = open ( " / Users / jpc / texto . txt " , " r " )
6 # Apaga o ficheiro se j á existir :
7 f = open ( " / Users / jpc / dados . txt " , " w " )
8 # N ã o apaga mas acrescenta :
9 f = open ( " / Users / jpc / dados . txt " , " a " )

Nota: f é a variável que, no programa, representa o ficheiro. O nome


desta variável pode ser outro qualquer, e.g., fich, ou ficheiro.

Programação (Informática Web) Aula 8 November 23, 2022 6 / 19


Ficheiros / Ficheiro de Texto

A abertura de um ficheiro é realizada através da função:

f = open(fichnome:str, modo:str, encoding:str)

Exemplo:
1 f = open ( " texto . txt " , " r " )

A variável de ficheiro representa o objecto que serve de canal de


comunicação entre o programa e o ficheiro. É através deste que podemos
ler informação do ficheiro ou escrever nele, usando os métodos
associados: read, readline, readlines, write, writelines, etc.

Quando já não houver necessidade de manter a ligação ao ficheiro,


devemos explicitamente fechar essa ligação com o método close.

Programação (Informática Web) Aula 8 November 23, 2022 7 / 19


Ficheiros / Ficheiro de Texto

A abertura de um ficheiro é realizada através da função:

f = open(fichnome:str, modo:str, encoding:str)

Exemplo:
1 f = open ( " texto . txt " , " r " )

Alguns métodos importantes Descrição


f.read([n:int]) → str Lê n caracteres do ficheiro (default: todos)
f.readline() → str Lê uma linha do ficheiro.
f.readlines([n:int]) → list Lê n linhas do ficheiro (default: todas)
f.write(s:str) Escreve a string s no ficheiro
f.writelines(L:list) Escreve as strings de L no ficheiro
f.close() Fecha o ficheiro representado por f

Table 1: Métodos de leitura e escrita em ficheiros de texto.

Programação (Informática Web) Aula 8 November 23, 2022 8 / 19


Manipulação de Ficheiros de Texto

Vamos supor que temos um ficheiro com uma noticia, cujo caminho é o
seguinte: /Users/jpc/Desktop/noticia.txt:

ESA reúne-se em Matosinhos para definir uma resposta a


alterações climáticas e lixo espacial.

A Agência Espacial Europeia (ESA) vai reunir-se na próxima


sexta-feira, em Matosinhos os seus 22 Estados-membros para definir
estratégias de resposta às alterações climáticas, às catástrofes
naturais e ao lixo espacial. A ESA recomenda ainda a construção de
constelações de satélites baseados em tecnologias mais avançadas,
como a tecnologia quântica.

Agora queremos um programa em Python que abre este ficheiro e mostra


cada uma das suas linhas no output.

Programação (Informática Web) Aula 8 November 23, 2022 9 / 19


Manipulação de Ficheiros de Texto

O Algoritmo habitual de leitura e processamento dos dados de um ficheiro


envolve 4 passos fundamentais:
1 Abertura (open) do ficheiro para leitura ("r");
2 Leitura dos dados (linhas) do ficheiro;
3 Processamento eventual dos dados lidos;
4 Fecho do ficheiro.
1 f = open ( " / Users / jpc / Desktop / noticia . txt " , " r " )
2 linhas = f . readlines ()
3 print ( linhas )
4 f . close ()

[’ESA reúne-se em Matosinhos para definir uma resposta a \n’, ’alterações climáticas e lixo espacial.\n’,
’\n’, ’A Agência Espacial Europeia (ESA) vai reunir-se na próxima \n’, ’sexta-feira, em Matosinhos
os seus 22 Estados-membros para definir \n’, ’estratégias de resposta às alterações climáticas, às
catástrofes\n’, ’naturais e ao lixo espacial. A ESA recomenda ainda a construção de \n’, ’constelações de
satélites baseados em tecnologias mais avançadas,\n’, ’como a tecnologia quântica.\n’].

Programação (Informática Web) Aula 8 November 23, 2022 10 / 19


Manipulação de Ficheiros de Texto

O Algoritmo habitual de leitura e processamento dos dados de um ficheiro


envolve 4 passos fundamentais:
1 f = open ( " / Users / jpc / Desktop / noticia . txt " , " r " )
2 linhas = f . readlines ()
3 for linha in linhas :
4 print ( linha . strip () )
5 f . close ()

ESA reúne-se em Matosinhos para definir uma resposta a


alterações climáticas e lixo espacial.

A Agência Espacial Europeia (ESA) vai reunir-se na próxima


sexta-feira, em Matosinhos os seus 22 Estados-membros para definir
estratégias de resposta às alterações climáticas, às catástrofes
naturais e ao lixo espacial. A ESA recomenda ainda a construção de
constelações de satélites baseados em tecnologias mais avançadas,
como a tecnologia quântica.

Programação (Informática Web) Aula 8 November 23, 2022 11 / 19


Manipulação de Ficheiros de Texto
Em muitos casos queremos ler linha a linha até chegar ao fim do ficheiro.
Nesse caso sabemos que chegámos ao fim quando readline() devolver a
string vazia: "".
1 f = open ( " / Users / jpc / Desktop / noticia . txt " , " r " )
2 i = 1
3 linha = " x "
4 while linha != " " :
5 linha = f . readline ()
6 print ( " %3 d % s " % (i , linha . strip () ) )
7 i = i +1
8 f . close ()

1 ESA reúne-se em Matosinhos para definir uma resposta a


2 alterações climáticas e lixo espacial.
3
4 A Agência Espacial Europeia (ESA) vai reunir-se na próxima
5 sexta-feira, em Matosinhos os seus 22 Estados-membros para definir
6 estratégias de resposta às alterações climáticas, às catástrofes
7 naturais e ao lixo espacial. A ESA recomenda ainda a construção de
8 constelações de satélites baseados em tecnologias mais avançadas,
9 como a tecnologia quântica.
10

Programação (Informática Web) Aula 8 November 23, 2022 12 / 19


Manipulação de Ficheiros de Texto

Em muitos casos queremos ler linha a linha até chegar ao fim do ficheiro.
Nesse caso sabemos que chegámos ao fim quando readline() devolver a
string vazia "". Uma versão muito simplificada da anterior é a seguinte:
1 i = 1
2 for s in open ( " / Users / jpc / Desktop / noticia . txt " , " r " ) :
3 print ( " %3 d % s " % (i , s . strip () ) )
4 i = i +1

1 ESA reúne-se em Matosinhos para definir uma resposta a


2 alterações climáticas e lixo espacial.
3
4 A Agência Espacial Europeia (ESA) vai reunir-se na próxima
5 sexta-feira, em Matosinhos os seus 22 Estados-membros para definir
6 estratégias de resposta às alterações climáticas, às catástrofes
7 naturais e ao lixo espacial. A ESA recomenda ainda a construção de
8 constelações de satélites baseados em tecnologias mais avançadas,
9 como a tecnologia quântica.

Programação (Informática Web) Aula 8 November 23, 2022 13 / 19


Escrita em Ficheiros de Texto

O processo de escrita de informação em ficheiros é semelhante, seguindo


todavia um fluxo inverso ao da leitura.
1 f = open ( " texto . txt " , " w " )
2 f . write ( " Universidade da Beira Interior " )
3 f . close ()

Neste exemplo é gerado um ficheiro com uma única string, na mesma


directoria/pasta em que se encontra o programa a executar. Se já existir
um ficheiro com esse nome, este será destruído dando lugar ao novo
ficheiro. Para escrita incremental teremos de fazer o seguinte:
1 f = open ( " texto . txt " , " a " )
2 f . writelines ([ " | Serra da Estrela " , " | Covilh ã " ])
3 f . close ()

Ficando com:
Universidade da Beira Interior | Serra da Estrela | Covilhã

Programação (Informática Web) Aula 8 November 23, 2022 14 / 19


Escrita em Ficheiros de Texto

Mas então se estivermos na “nuvem” (cloud) onde é que guardamos os


ficheiros? Vejamos o seguinte exemplo:

Figure 1: Ficheiro aleatorios.txt gerado na cloud.

Onde é que será que o ficheiro aleatorios.txt é guardado?

Programação (Informática Web) Aula 8 November 23, 2022 15 / 19


Escrita em Ficheiros de Texto

Mas então se estivermos na “nuvem” (cloud) onde é que guardamos os


ficheiros? Vejamos o seguinte exemplo:

Figure 2: Ficheiro aleatorios.txt gerado na cloud.

Programação (Informática Web) Aula 8 November 23, 2022 16 / 19


Escrita em Ficheiros de Texto

Após a execução temos o ficheiro gerado na área do programa, na cloud do


Google Colaboratory:

Figure 3: Ficheiro aleatorios.txt gerado na cloud.

Programação (Informática Web) Aula 8 November 23, 2022 17 / 19


Escrita em Ficheiros de Texto

No Colaboratory podemos inclusive fazer o “mount” da nossa própria drive


da Google:

Figure 4: Montagem de uma Google Drive.

Programação (Informática Web) Aula 8 November 23, 2022 18 / 19


Ficheiros de Texto
Exercício estratégico
Pretendemos criar um programa que irá gerar um conjunto de n números
inteiros aleatórios, entre zero (0) e mil (1000). Os n números gerados serão
escritos num ficheiro de texto denominado aleatorios.txt, devidamente
formatados, com no máximo 10 números por linha.

Figure 5: Ficheiro aleatorios.txt gerado pelo programa.

Programação (Informática Web) Aula 8 November 23, 2022 19 / 19

Você também pode gostar