Articles

GeeksforGeeks

Prerequisites:

  • Modos de acesso
  • Abrir um ficheiro
  • Fechar um ficheiro

Python fornece funções embutidas para criar, escrever e ler ficheiros. Há dois tipos de ficheiros que podem ser tratados em python, ficheiros de texto normal e ficheiros binários (escritos em linguagem binária, 0s, e 1s). Neste artigo, vamos estudar a leitura linha a linha de um ficheiro.

Leitura linha a linha

Usar linhas de leitura()

readlines() é usado para ler todas as linhas de uma só vez e depois devolvê-las como cada linha um elemento de cadeia numa lista. Esta função pode ser usada para pequenos ficheiros, pois lê todo o conteúdo do ficheiro na memória, e depois divide-o em linhas separadas. Podemos iterar sobre a lista e retirar o carácter da nova linha ‘\n’ usando a função strip().

Exemplo:

>br>

Python3
div>>div>

>br>>>/p>

>div>

L =
file1 =open('myfile.txt', 'w')
file1.writelines(L)
file1.close()
file1 =open('myfile.txt', 'r')
Lines =file1.readlines()
count =0

forline inLines:
count +=1

print("Line{}: {}".format(count, line.strip()))

>br>>>/div>



Eliminar:

Line1: GeeksLine2: forLine3: Geeks

Utilizando a função readline()

readline() lê uma linha do ficheiro e devolve-a sob a forma da string. É necessário um parâmetro n, que especifica o número máximo de bytes que serão lidos. Contudo, não lê mais do que uma linha, mesmo que n exceda o comprimento da linha. Será eficiente ao ler um ficheiro grande porque em vez de ir buscar todos os dados de uma só vez, vai buscar linha a linha. readline() devolve a próxima linha do ficheiro que contém um novo carácter de linha no final. Além disso, se o fim do ficheiro for alcançado, devolverá uma cadeia de caracteres vazia.

Exemplo:

Python3

>/p>

L =
file1 =open('myfile.txt', 'w')
file1.writelines((L))
file1.close()
file1 =open('myfile.txt', 'r')
count =0
whileTrue:

count +=1
line =file1.readline()
ifnotline:
break
print("Line{}: {}".format(count, line.strip()))
file1.close()

br>>/div>



Eliminar:

Line1 GeeksLine2 forLine3 Geeks

Using for loop

Um objecto iterável é devolvido pela função open() enquanto se abre um ficheiro. Esta forma final de leitura num ficheiro linha a linha inclui a iteração sobre um objecto de ficheiro num laço para. Ao fazê-lo, estamos a tirar partido de uma função Python incorporada que nos permite iterar sobre o objecto de ficheiro implicitamente usando um laço para laço numa combinação com a utilização do objecto iterável. Esta abordagem requer menos linhas de código, o que é sempre a melhor prática digna de ser seguida.

Exemplo:

Python3

>/p>

br>

L =
file1 =open('myfile.txt', 'w')
file1.writelines(L)
file1.close()
file1 =open('myfile.txt', 'r')
count =0
print("Using for loop")
forline infile1:

count +=1
print("Line{}: {}".format(count, line.strip()))
file1.close()



Eliminar:

Using for loopLine1: GeeksLine2: forLine3: Geeks

Com declaração

Nas abordagens acima, sempre que o ficheiro é aberto é necessário fechá-lo explicitamente. Se alguém se esquecer de fechar o ficheiro, pode introduzir vários erros no código, ou seja, muitas alterações nos ficheiros não entram em vigor até que o ficheiro seja devidamente fechado. Para evitar isto, pode ser utilizada uma declaração. O With statement em Python é utilizado no tratamento de excepções para tornar o código mais limpo e muito mais legível. Simplifica a gestão de recursos comuns como os fluxos de ficheiros. Observe o seguinte exemplo de código sobre como a utilização de com declaração torna o código mais limpo. Não há necessidade de chamar file.close() quando se utiliza com a declaração. O com a declaração em si assegura a aquisição e libertação adequada de recursos.

Example:

Python3

>/p>

L =
with open("myfile.txt", "w") as fp:
fp.writelines(L)
count =0
print("Using readlines()")
with open("myfile.txt") as fp:
Lines =fp.readlines()
forline inLines:
count +=1
print("Line{}: {}".format(count, line.strip()))
count =0
print("\nUsing readline()")
with open("myfile.txt") as fp:
whileTrue:
count +=1
line =fp.readline()

ifnotline:
break
print("Line{}: {}".format(count, line.strip()))
count =0
print("\nUsing for loop")
with open("myfile.txt") as fp:
forline infp:
count +=1
print("Line{}: {}".format(count, line.strip()))



Using readlines()Line1: GeeksLine2: forLine3: GeeksUsing readline()Line1: GeeksLine2: forLine3: GeeksUsing for loopLine1: GeeksLine2: forLine3: Geeks

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *