English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
O arquivo é uma posição nomeada no disco rígido usada para armazenar informações relacionadas. Ele é usado para armazenar dados permanentemente em memória não volátil (como disco rígido).
Devido à volatilidade da memória de acesso aleatório (RAM), os dados são perdidos quando o computador é desligado, portanto, usamos arquivos para uso futuro de dados.
Quando precisamos ler ou escrever em um arquivo, precisamos primeiro abri-lo. Após concluir, é necessário fechá-lo para liberar os recursos associados ao arquivo.
Portanto, nas operações de arquivo do Python, a ordem é a seguinte.
Abrir o arquivo
Ler ou escrever (executar operação)
Fechar o arquivo
O Python possui a função integrada open() para abrir arquivos. Esta função retorna um objeto de arquivo, também conhecido como柄, pois é usado para ler ou modificar o arquivo de maneira apropriada.
>>> f = open("test.txt") # Abrir o arquivo no diretório atual >>> f = open("C:/Python33/README.txt") # Especificar o caminho completo
Podemos especificar o modo ao abrir o arquivo. No modo, especificamos se queremos ler 'r', escrever 'w' ou anexar 'a' ao arquivo. Também especificamos se queremos abrir o arquivo em modo texto ou binário.
A configuração padrão é ler em modo texto. Neste modo, ao ler do arquivo, obteremos uma string.
Por outro lado, o modo binário retorna bytes, que é o modo a ser usado para manipular arquivos não-texto (como imagens ou arquivos exe)
Modo | Descrição |
---|---|
'r' | Abrir o arquivo para leitura. (Padrão) |
'w' | Abrir o arquivo para escrita. Se não existir, criar um novo arquivo, ou se existir, truncá-lo. |
'x' | Abrir o arquivo para criação exclusiva. Se o arquivo já existir, a operação falhará. |
'a' | Abrir para anexar no final do arquivo sem truncar. Se não existir, criar um novo arquivo. |
't' | Abrir em modo texto. (Padrão) |
'b' | Abrir em modo binário. |
'+' | Abrir o arquivo para atualização (leitura e escrita) |
f = open("test.txt") # Igual a 'r' ou 'rt' f = open("test.txt",'w') # Escrever em modo texto f = open("img.bmp",'r+b') # Ler e escrever em modo binário
Diferente de outros idiomas, o caractere 'a' não sugere um número antes de ser codificado em ASCII (ou qualquer codificação equivalente)97 .
Além disso, a codificação padrão depende da plataforma. No Windows, 'cp'1252'Mas 'utf-8'No Linux.
Portanto, também não podemos depender da codificação padrão, pois o comportamento do código pode variar em diferentes plataformas.
Portanto, ao lidar com arquivos em modo texto, é altamente recomendável especificar o tipo de codificação.
f = open("test.txt",mode = 'r',encoding = 'utf-8')
Após concluir as operações no arquivo, precisamos fechar o arquivo corretamente.
Fechar o arquivo libera os recursos associados ao arquivo e é feito usando o método close().
Python tem um coletor de lixo para limpar objetos não referenciados, mas, absolutamente, não podemos depender dele para fechar arquivos.
f = open("test.txt",encoding = 'utf-8') # Executar operações de arquivo f.close()
Esse método não é completamente seguro. Se ocorrer uma exceção ao executar algumas operações no arquivo, o código sairá sem fechar o arquivo.
Uma maneira mais segura é usartry ... finallybloco.
try: f = open("test.txt",encoding = 'utf-8') # Executar operações de arquivo finally: f.close()
Dessa forma, podemos garantir que o arquivo seja fechado corretamente mesmo se houver uma exceção, o que faz com que o fluxo do programa pare.
O melhor método é usar a declaração with. Isso garante que o arquivo seja fechado corretamente ao sair do bloco.
Não precisamos chamar explicitamente o método close(). Ele é feito internamente.
with open("test.txt",encoding = 'utf-8) as f: # Executar operações de arquivo
Para escrever em um arquivo usando Python, podemos escrever no modo 'w', anexar no modo 'a' ou criar exclusivamente no modo 'x'.
Precisamos usar com cautela o modo 'w', pois ele substitui o arquivo (se já existir). Todos os dados anteriores serão deletados.
Escrever strings ou sequências de bytes (para arquivos binários) é feito usando o método write(). Este método retorna o número de caracteres escritos no arquivo.
with open("test.txt",'w',encoding = 'utf-8) as f: f.write("my first file\n") f.write("This file\n\n") f.write("contains three lines\n")
Se 'test.txt' não existir, o programa criará um arquivo novo com o nome. Se já existir, ele o substituirá.
Precisamos incluir manualmente o caractere de nova linha para distinguir diferentes linhas.
Para usar Python para ler arquivos, devemos abrir o arquivo no modo de leitura.
existem várias maneiras de fazer isso. Podemos usar o método read(size) para lertamanhodados. Se não for especificadotamanhoparâmetros, que irão ler e retornar até o final do arquivo.
>>> f = open("test.txt",'r',encoding = 'utf-8') >>> f.read(4) # Ler o anterior4dados "Este" >>> f.read(4) # Ler o próximo4dados "é" >>> f.read() # Ler o resto até o final do arquivo "meu primeiro arquivo\nEste arquivo\ncontém três linhas\n" >>> f.read() # Leitura adicional retorna uma string vazia ""
Podemos ver que o método read() retorna o caractere de nova linha '\n'. Após atingir o final do arquivo, teremos uma string vazia na leitura adicional.
Podemos usar o método seek() para alterar o cursor (posição) atual do arquivo. Da mesma forma, o método tell() retorna nossa posição atual (em bytes).
>>> f.tell() # Obter a posição atual do arquivo 56 >>> f.seek(0) # Mover o cursor do arquivo para a posição inicial 0 >>> print(f.read()) # Ler todo o arquivo Este é o meu primeiro arquivo Este arquivo contém três linhas
Podemos usarLoop forLer linha a linha o arquivo. Isso é eficiente e rápido.
>>> for line in f: ... print(line, end = '') ... Este é o meu primeiro arquivo Este arquivo contém três linhas
As linhas do arquivo próprio têm o caractere de nova linha '\n'.
Além disso, o parâmetro final do print() evita duas quebras de linha ao imprimir.
Ou, podemos usar o método readline() para ler as linhas individuais do arquivo. Este método lê o arquivo até o caractere de nova linha, incluindo-o.
>>> f.readline() "Este é o meu primeiro arquivo\n" >>> f.readline() "Este arquivo\n" >>> f.readline() "contém três linhas\n" >>> f.readline() ""
Por fim, o método readlines() retorna uma lista com o resto das linhas do arquivo. Quando atingimos o final do arquivo (EOF), todos esses métodos de leitura retornarão um valor vazio.
>>> f.readlines() ['Este é o meu primeiro arquivo\n', 'Este arquivo\n', 'contém três linhas\n']
O objeto de arquivo tem muitos métodos disponíveis. Alguns foram usados nos exemplos acima.
Esta é a lista completa dos métodos no modo de texto, com descrições breves.
close() | Fechar o arquivo. |
detach() | Retornar o fluxo bruto (raw stream) separado do buffer. |
fileno() | Retornar o número representativo do fluxo do sistema operacional. |
flush() | Atualizar o buffer interno. |
isatty() | Retornar se o fluxo de arquivo é interativo. |
read() | Retornar o conteúdo do arquivo. |
readable() | Retornar se é possível ler o fluxo de arquivo. |
readline() | Retornar uma linha do arquivo. |
readlines() | Retornar uma lista de linhas do arquivo. |
seek() | Alterar a posição do arquivo. |
seekable() | Retornar se o arquivo permite que alteremos a posição do arquivo. |
tell() | Retornar a posição atual do arquivo. |
truncate() | Ajustar o tamanho do arquivo para o tamanho especificado. |
writeable() | Retornar se é possível escrever no arquivo. |
write() | Escrever uma string específica em um arquivo. |
writelines() | Escrever uma lista de strings em um arquivo. |