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

Python I/O de Arquivos: Dominando Operações de Entrada e Saída

Este capítulo abrange todas as funções básicas de I/O disponíveis em Python. Para mais funções, consulte a documentação padrão do Python.

Imprimindo na Tela

A maneira mais simples de produzir saída é usando a instrução print, onde você pode passar zero ou mais expressões separadas por vírgulas. Esta função converte as expressões que você passa em uma string e escreve o resultado na saída padrão:

#!/usr/bin/python
print("Python is really a great language,", "isn't it?")

Isso produz o seguinte resultado na sua tela padrão:

Python is really a great language, isn't it?

Lendo Entrada do Teclado

O Python fornece duas funções embutidas para ler uma linha de texto da entrada padrão, que por padrão vem do teclado. Essas funções são:

A Função raw_input (Python 2)

A função raw_input([prompt]) lê uma linha da entrada padrão e a retorna como uma string (removendo a nova linha final).

#!/usr/bin/python
str = raw_input("Enter your input: ")
print("Received input is :", str)

Isso solicita que você insira qualquer string e exibe a mesma string na tela. Quando digitei "Hello Python!", a saída é assim:

Enter your input: Hello Python
Received input is : Hello Python

A Função input

A função input([prompt]) é equivalente a raw_input, exceto que assume que a entrada é uma expressão Python válida e retorna o resultado avaliado.

#!/usr/bin/python
str = input("Enter your input: ")
print("Received input is :", str)

Isso produziria o seguinte resultado contra a entrada inserida:

Enter your input: [x*5 for x in range(2,10,2)]
Recieved input is : [10, 20, 30, 40]

Abrindo e Fechando Arquivos

Até agora, você tem lido e escrito na entrada e saída padrão. Agora, veremos como usar arquivos de dados reais.

O Python fornece funções e métodos básicos necessários para manipular arquivos por padrão. Você pode fazer a maior parte da manipulação de arquivos usando um objeto file.

A Função open

Antes de poder ler ou escrever um arquivo, você deve abri-lo usando a função embutida open() do Python. Esta função cria um objeto file, que será utilizado para chamar outros métodos de suporte associados a ele.

Sintaxe

objeto_arquivo = open(nome_arquivo [, modo_acesso][, buffering])

Detalhes dos parâmetros:

Aqui está uma lista dos diferentes modos de abertura de um arquivo:

Nº Modos e Descrição
1

r

Abre um arquivo somente para leitura. O ponteiro do arquivo é colocado no início do arquivo. Este é o modo padrão.

2

rb

Abre um arquivo somente para leitura no formato binário. O ponteiro do arquivo é colocado no início do arquivo. Este é o modo padrão.

3

r+

Abre um arquivo para leitura e escrita. O ponteiro do arquivo é colocado no início do arquivo.

4

rb+

Abre um arquivo para leitura e escrita no formato binário. O ponteiro do arquivo é colocado no início do arquivo.

5

w

Abre um arquivo somente para escrita. Sobrescreve o arquivo se ele existir. Se o arquivo não existir, cria um novo arquivo para escrita.

6

wb

Abre um arquivo somente para escrita no formato binário. Sobrescreve o arquivo se ele existir. Se o arquivo não existir, cria um novo arquivo para escrita.

7

w+

Abre um arquivo para escrita e leitura. Sobrescreve o arquivo existente se ele existir. Se o arquivo não existir, cria um novo arquivo para leitura e escrita.

8

wb+

Abre um arquivo para escrita e leitura no formato binário. Sobrescreve o arquivo existente se ele existir. Se o arquivo não existir, cria um novo arquivo para leitura e escrita.

9

a

Abre um arquivo para anexação. O ponteiro do arquivo está no final do arquivo se ele existir. Ou seja, o arquivo está no modo de anexação. Se o arquivo não existir, cria um novo arquivo para escrita.

10

ab

Abre um arquivo para anexação no formato binário. O ponteiro do arquivo está no final do arquivo se ele existir. Ou seja, o arquivo está no modo de anexação. Se o arquivo não existir, cria um novo arquivo para escrita.

11

a+

Abre um arquivo para anexação e leitura. O ponteiro do arquivo está no final do arquivo se ele existir. O arquivo abre no modo de anexação. Se o arquivo não existir, cria um novo arquivo para leitura e escrita.

12

ab+

Abre um arquivo para anexação e leitura no formato binário. O ponteiro do arquivo está no final do arquivo se ele existir. O arquivo abre no modo de anexação. Se o arquivo não existir, cria um novo arquivo para leitura e escrita.

Atributos do Objeto file

Uma vez que um arquivo é aberto e você tem um objeto file, pode obter várias informações relacionadas a esse arquivo.

Aqui está uma lista de todos os atributos relacionados ao objeto file:

Nº Atributo e Descrição
1

file.closed

Retorna true se o arquivo está fechado, false caso contrário.

2

file.mode

Retorna o modo de acesso com que o arquivo foi aberto.

3

file.name

Retorna o nome do arquivo.

4

file.softspace

Retorna false se espaço explicitamente requerido com print, true caso contrário.

Exemplo

#!/usr/bin/python
# Abre um arquivo
fo = open("foo.txt", "wb")
print("Name of the file: ", fo.name)
print("Closed or not : ", fo.closed)
print("Opening mode : ", fo.mode)
print("Softspace flag : ", fo.softspace)

Isso produz o seguinte resultado:

Name of the file: foo.txt
Closed or not : False
Opening mode : wb
Softspace flag : 0

O Método close()

O método close() de um objeto file descarrega qualquer informação não escrita e fecha o objeto arquivo, após o qual não mais escrita pode ser feita.

O Python fecha automaticamente um arquivo quando o objeto de referência de um arquivo é reatribuído a outro arquivo. É uma boa prática usar o método close() para fechar um arquivo.

Sintaxe

fileObject.close()

Exemplo

#!/usr/bin/python
# Abre um arquivo
fo = open("foo.txt", "wb")
print("Name of the file: ", fo.name)
# Fecha arquivo aberto
fo.close()

Isso produz o seguinte resultado:

Name of the file: foo.txt

Lendo e Escrevendo Arquivos

O objeto file fornece um conjunto de métodos de acesso para facilitar nossa vida. Veremos como usar os métodos read() e write() para ler e escrever arquivos.

O Método write()

O método write() escreve qualquer string em um arquivo aberto. É importante notar que strings Python podem ter dados binários e não apenas texto.

O método write() não adiciona um caractere de nova linha ('\n') ao final da string:

Sintaxe

fileObject.write(string)

Aqui, o parâmetro passado é o conteúdo a ser escrito no arquivo aberto.

Exemplo

#!/usr/bin/python
# Abre um arquivo
fo = open("foo.txt", "wb")
fo.write("Python is a great language.\nYeah its great!!\n")
# Fecha arquivo aberto
fo.close()

O método acima criaria o arquivo foo.txt e escreveria o conteúdo dado nele e finalmente fecharia o arquivo. Se você abrisse este arquivo, ele teria o seguinte conteúdo.

Python is a great language.
Yeah its great!!

O Método read()

O método read() lê uma string de um arquivo aberto. É importante notar que strings Python podem ter dados binários, além de dados de texto.

Sintaxe

fileObject.read([count])

Aqui, o parâmetro passado é o número de bytes a serem lidos do arquivo aberto. Este método começa a ler do início do arquivo e se count estiver faltando, então ele tenta ler o máximo possível, talvez até o final do arquivo.

Exemplo

Vamos pegar um arquivo foo.txt, que criamos acima.

#!/usr/bin/python
# Abre um arquivo
fo = open("foo.txt", "r+")
str = fo.read(10)
print("Read String is : ", str)
# Fecha arquivo aberto
fo.close()

Isso produz o seguinte resultado:

Read String is : Python is

Posições no Arquivo

O método tell() informa a posição atual dentro do arquivo; em outras palavras, a próxima leitura ou escrita ocorrerá naquele número de bytes a partir do início do arquivo.

O método seek(offset[, from]) altera a posição atual do arquivo. O argumento offset indica o número de bytes a serem movidos. O argumento from especifica a posição de referência a partir da qual os bytes devem ser movidos.

Se from for definido como 0, significa usar o início do arquivo como posição de referência e 1 significa usar a posição atual como posição de referência e se for definido como 2, então o final do arquivo seria tomado como posição de referência.

Exemplo

Vamos pegar um arquivo foo.txt, que criamos acima.

#!/usr/bin/python
# Abre um arquivo
fo = open("foo.txt", "r+")
str = fo.read(10)
print("Read String is : ", str)
# Verifica posição atual
position = fo.tell()
print("Current file position : ", position)
# Reposiciona ponteiro no início mais uma vez
position = fo.seek(0, 0)
str = fo.read(10)
print("Again read String is : ", str)
# Fecha arquivo aberto
fo.close()

Isso produz o seguinte resultado:

Read String is : Python is
Current file position : 10
Again read String is : Python is

Renomeando e Excluindo Arquivos

O módulo os do Python fornece métodos que ajudam a realizar operações de processamento de arquivos, como renomear e excluir arquivos.

Para usar este módulo, você precisa importá-lo primeiro e então pode chamar quaisquer funções relacionadas.

O Método rename()

O método rename() recebe dois argumentos: o nome do arquivo atual e o novo nome do arquivo.

Sintaxe

os.rename(nome_arquivo_atual, novo_nome_arquivo)

Exemplo

Segue o exemplo para renomear um arquivo existente test1.txt:

#!/usr/bin/python
import os
# Renomeia um arquivo de test1.txt para test2.txt
os.rename("test1.txt", "test2.txt")

O Método remove()

Você pode usar o método remove() para excluir arquivos fornecendo o nome do arquivo a ser excluído como argumento.

Sintaxe

os.remove(nome_arquivo)

Exemplo

Segue o exemplo para excluir um arquivo existente test2.txt:

#!/usr/bin/python
import os
# Exclui arquivo test2.txt
os.remove("text2.txt")

Diretórios em Python

Todos os arquivos estão contidos dentro de vários diretórios, e o Python não tem problema em lidar com estes também. O módulo os tem vários métodos que ajudam a criar, remover e alterar diretórios.

O Método mkdir()

Você pode usar o método mkdir() do módulo os para criar diretórios no diretório atual. Você precisa fornecer um argumento a este método que contém o nome do diretório a ser criado.

Sintaxe

os.mkdir("novodir")

Exemplo

Segue o exemplo para criar um diretório test no diretório atual:

#!/usr/bin/python
import os
# Cria um diretório "test"
os.mkdir("test")

O Método chdir()

Você pode usar o método chdir() para alterar o diretório atual. O método chdir() recebe um argumento, que é o nome do diretório que você deseja tornar o diretório atual.

Sintaxe

os.chdir("novodir")

Exemplo

Segue o exemplo para entrar no diretório "/home/newdir":

#!/usr/bin/python
import os
# Alterando um diretório para "/home/newdir"
os.chdir("/home/newdir")

O Método getcwd()

O método getcwd() exibe o diretório de trabalho atual.

Sintaxe

os.getcwd()

Exemplo

Segue o exemplo para dar o diretório atual:

#!/usr/bin/python
import os
# Isso daria a localização do diretório atual
os.getcwd()

O Método rmdir()

O método rmdir() exclui o diretório, que é passado como argumento no método.

Antes de remover um diretório, todo o conteúdo nele deve ser removido.

Sintaxe

os.rmdir('nomedir')

Exemplo

Segue o exemplo para remover o diretório "/tmp/test". É necessário dar o nome totalmente qualificado do diretório, caso contrário, ele procuraria por aquele diretório no diretório atual.

#!/usr/bin/python
import os
# Isso removeria o diretório "/tmp/test".
os.rmdir("/tmp/test")

Métodos Relacionados a Arquivos e Diretórios

Existem três fontes importantes, que fornecem uma ampla gama de métodos utilitários para lidar e manipular arquivos e diretórios em sistemas operacionais Windows e Unix. Eles são:

python

  1. Dominando Entrada e Saída (I/O) em C: scanf() e printf() Explicados
  2. Manipulação de Arquivos em C: Dominando I/O com fopen, fprintf, fread e fseek
  3. Dominando I/O e Importação de Módulos em Python: Guia Prático
  4. Python File I/O: Dominando Operações de Arquivo, Leitura, Escrita e Gerenciamento
  5. Dominando Operações com Diretórios e Arquivos em Python
  6. Verificando Existência de Arquivos e Diretórios em Python – Guia Prático
  7. Dominando I/O de Arquivos em C: Criando, Abrindo e Gerenciando Arquivos
  8. Entendendo Arquivos de Cabeçalho em C: Tipos, Uso e Boas Práticas
  9. Dominando I/O de Arquivos em C++: Leitura e Escrita com fstream
  10. Dominando I/O de Arquivos em C#: Leitura, Escrita e Gerenciamento de Streams