Lendo dados de um arquivo
Ao ler um arquivo de texto, o fluxo de bytes entra na entrada do programa sequencialmente, um após o outro, de modo que o arquivo fornece acesso sequencial aos dados. Ou seja, se precisarmos ler o 10º valor do arquivo, primeiro devemos ler os 9 anteriores.
A leitura de uma única linha de um arquivo permite que o método
readline()
seja executado. Este método é chamado em uma variável de arquivo.
Fin = open("input.txt")
s = Fin.readline()
Vários métodos podem ser aplicados à string lida, semelhantes aos usados na leitura do teclado (split()
, map()
, etc.). Por exemplo, se houver dois números separados por um espaço em uma linha de um arquivo, você poderá contá-los da seguinte maneira:
Fin = open("input.txt")
s = Fin.readline().split() # divide a linha nos espaços s = ["2007", "2021"]
a, b = map(int, s) # aplica o método int() a todos os elementos da lista s,
# ou seja, converte a cadeia de caracteres em um número
# a, b = int(s[0], s[1]) # isso é o mesmo que a linha acima
# a, b = [int(x) for x in s] # o mesmo que um gerador
O método read()
lê todo o conteúdo do arquivo e retorna uma string que pode conter os caracteres '\n
'. Se um parâmetro inteiro for passado para o método read()
, não mais do que o número especificado de caracteres será lido. Por exemplo, você pode ler um arquivo byte por byte usando o método read(1)
.
.
Quando um arquivo é aberto, o ponteiro que determina a localização atual no arquivo é colocado no início do arquivo e, quando lido, é deslocado para a posição seguinte à leitura dos dados. Ao escrever, o ponteiro é movido para a próxima posição livre.