Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> python

E/S de arquivo Python

E/S de arquivo Python


Neste tutorial, você aprenderá sobre as operações de arquivo do Python. Mais especificamente, abrir um arquivo, lê-lo, escrever nele, fechá-lo e vários métodos de arquivo que você deve conhecer.

Vídeo:Lendo e gravando arquivos em Python

Arquivos


Os arquivos são locais nomeados no disco para armazenar informações relacionadas. Eles são usados ​​para armazenar dados permanentemente em uma memória não volátil (por exemplo, disco rígido).

Como a memória de acesso aleatório (RAM) é volátil (que perde seus dados quando o computador é desligado), usamos arquivos para uso futuro dos dados armazenando-os permanentemente.

Quando queremos ler ou gravar em um arquivo, precisamos abri-lo primeiro. Quando terminarmos, ele precisa ser fechado para que os recursos vinculados ao arquivo sejam liberados.

Portanto, em Python, uma operação de arquivo ocorre na seguinte ordem:
  1. Abrir um arquivo
  2. Ler ou gravar (executar operação)
  3. Feche o arquivo

Abrindo arquivos em Python


Python tem um open() embutido função para abrir um arquivo. Essa função retorna um objeto de arquivo, também chamado de identificador, pois é usado para ler ou modificar o arquivo de acordo.
>>> f = open("test.txt")    # open file in current directory
>>> f = open("C:/Python38/README.txt")  # specifying full path

Podemos especificar o modo ao abrir um arquivo. No modo, especificamos se queremos ler r , escreva w ou anexe a ao arquivo. Também podemos especificar se queremos abrir o arquivo no modo texto ou no modo binário.

O padrão é ler no modo de texto. Nesse modo, obtemos strings ao ler o arquivo.

Por outro lado, o modo binário retorna bytes e este é o modo a ser usado ao lidar com arquivos não textuais como imagens ou arquivos executáveis.
Modo Descrição
r Abre um arquivo para leitura. (padrão)
w Abre um arquivo para escrita. Cria um novo arquivo se não existir ou trunca o arquivo se existir.
x Abre um arquivo para criação exclusiva. Se o arquivo já existir, a operação falhará.
a Abre um arquivo para anexar no final do arquivo sem truncá-lo. Cria um novo arquivo se ele não existir.
t Abre no modo de texto. (padrão)
b Abre em modo binário.
+ Abre um arquivo para atualização (leitura e escrita)
f = open("test.txt")      # equivalent to 'r' or 'rt'
f = open("test.txt",'w')  # write in text mode
f = open("img.bmp",'r+b') # read and write in binary mode

Ao contrário de outros idiomas, o caractere a não implica o número 97 até que seja codificado usando ASCII (ou outras codificações equivalentes).

Além disso, a codificação padrão depende da plataforma. No Windows, é cp1252 mas utf-8 em Linux.

Portanto, não devemos confiar também na codificação padrão, caso contrário nosso código se comportará de maneira diferente em diferentes plataformas.

Portanto, ao trabalhar com arquivos no modo de texto, é altamente recomendável especificar o tipo de codificação.
f = open("test.txt", mode='r', encoding='utf-8')

Fechando arquivos em Python


Quando terminarmos de executar as operações no arquivo, precisamos fechá-lo corretamente.

Fechar um arquivo liberará os recursos que estavam vinculados ao arquivo. Isso é feito usando o close() método disponível em Python.

Python tem um coletor de lixo para limpar objetos não referenciados, mas não devemos confiar nele para fechar o arquivo.
f = open("test.txt", encoding = 'utf-8')
# perform file operations
f.close()



Este método não é totalmente seguro. Se ocorrer uma exceção quando estivermos realizando alguma operação com o arquivo, o código sai sem fechar o arquivo.

Uma maneira mais segura é usar um bloco try...finally.
try:
   f = open("test.txt", encoding = 'utf-8')
   # perform file operations
finally:
   f.close()

Dessa forma, estamos garantindo que o arquivo seja fechado corretamente, mesmo que seja levantada uma exceção que faça com que o fluxo do programa pare.

A melhor maneira de fechar um arquivo é usando o with declaração. Isso garante que o arquivo seja fechado quando o bloco dentro do with declaração é encerrada.

Não precisamos chamar explicitamente o close() método. É feito internamente.
with open("test.txt", encoding = 'utf-8') as f:
   # perform file operations

Gravando em arquivos em Python


Para escrever em um arquivo em Python, precisamos abri-lo em write w , anexar a ou criação exclusiva x modo.

Precisamos ter cuidado com o w modo, pois ele irá sobrescrever no arquivo se ele já existir. Devido a isso, todos os dados anteriores são apagados.

Escrever uma string ou sequência de bytes (para arquivos binários) é feito usando o write() método. Este método retorna o número de caracteres gravados 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")

Este programa criará um novo arquivo chamado test.txt no diretório atual se ele não existir. Se existir, será sobrescrito.

Devemos incluir os caracteres de nova linha para distinguir as diferentes linhas.

Ler arquivos em Python


Para ler um arquivo em Python, devemos abrir o arquivo na leitura r modo.

Existem vários métodos disponíveis para esta finalidade. Podemos usar o read(size) método para ler no size número de dados. Se o tamanho parâmetro não for especificado, ele lê e retorna até o final do arquivo.

Podemos ler o text.txt arquivo que escrevemos na seção acima da seguinte maneira:
>>> f = open("test.txt",'r',encoding = 'utf-8')
>>> f.read(4)    # read the first 4 data
'This'

>>> f.read(4)    # read the next 4 data
' is '

>>> f.read()     # read in the rest till end of file
'my first file\nThis file\ncontains three lines\n'

>>> f.read()  # further reading returns empty sting
''

Podemos ver que o read() retorna uma nova linha como '\n' . Uma vez que o final do arquivo é alcançado, obtemos uma string vazia na leitura adicional.

Podemos alterar nosso cursor de arquivo atual (posição) usando o seek() método. Da mesma forma, o tell() retorna nossa posição atual (em número de bytes).
>>> f.tell()    # get the current file position
56

>>> f.seek(0)   # bring file cursor to initial position
0

>>> print(f.read())  # read the entire file
This is my first file
This file
contains three lines

Podemos ler um arquivo linha por linha usando um loop for. Isso é eficiente e rápido.
>>> for line in f:
...     print(line, end = '')
...
This is my first file
This file
contains three lines

Neste programa, as linhas no próprio arquivo incluem um caractere de nova linha \n . Então, usamos o parâmetro end do print() função para evitar duas novas linhas ao imprimir.

Como alternativa, podemos usar o readline() método para ler linhas individuais de um arquivo. Este método lê um arquivo até a nova linha, incluindo o caractere de nova linha.
>>> f.readline()
'This is my first file\n'

>>> f.readline()
'This file\n'

>>> f.readline()
'contains three lines\n'

>>> f.readline()
''

Por último, o readlines() retorna uma lista de linhas restantes de todo o arquivo. Todos esses métodos de leitura retornam valores vazios quando o fim do arquivo (EOF) é atingido.
>>> f.readlines()
['This is my first file\n', 'This file\n', 'contains three lines\n']

Métodos de arquivo Python


Existem vários métodos disponíveis com o objeto de arquivo. Alguns deles foram usados ​​nos exemplos acima.

Aqui está a lista completa de métodos no modo de texto com uma breve descrição:
Método Descrição
fechar() Fecha um arquivo aberto. Não tem efeito se o arquivo já estiver fechado.
desanexar() Separa o buffer binário subjacente do TextIOBase e o retorna.
arquivo() Retorna um número inteiro (descritor de arquivo) do arquivo.
descarga() Limpa o buffer de gravação do fluxo de arquivos.
isatty() Retorna True se o fluxo de arquivos for interativo.
ler(n ) Lê no máximo n caracteres do arquivo. Lê até o final do arquivo se for negativo ou None .
legível() Retorna True se o fluxo de arquivo pode ser lido.
readline(n =-1) Lê e retorna uma linha do arquivo. Lê no máximo n bytes, se especificado.
linhas de leitura(n =-1) Lê e retorna uma lista de linhas do arquivo. Lê no máximo n bytes/caracteres se especificado.
procurar(deslocamento ,de =SEEK_SET ) Altera a posição do arquivo para deslocamento bytes, em referência a de (início, atual, fim).
procurável() Retorna True se o fluxo de arquivos suportar acesso aleatório.
dizer() Retorna a localização atual do arquivo.
truncar(tamanho =None ) Redimensiona o fluxo de arquivo para size bytes. Se tamanho não for especificado, redimensiona para o local atual.
gravável() Retorna True se o fluxo de arquivo pode ser gravado.
escrever(s ) Grava a string s para o arquivo e retorna o número de caracteres escritos.
linhas de escrita(linhas ) Escreve uma lista de linhas para o arquivo.

python

  1. C Entrada Saída (E/S)
  2. Tipos de dados Python
  3. Operadores Python
  4. Dicionário Python
  5. E/S de arquivo Python
  6. Python verifica se o arquivo existe | Como verificar se existe um diretório em Python
  7. Python JSON:codificar (despejar), decodificar (carregar) e ler arquivo JSON
  8. C - E/S de arquivo
  9. C# - E/S de arquivo
  10. Python - E/S de arquivos