Python - Arquivos de E / S

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

Impressão para a tela

A maneira mais simples de produzir saída é usar 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 grava o resultado na saída padrão da seguinte forma -

#!/usr/bin/python

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

Isso produz o seguinte resultado em sua tela padrão -

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

Ler entrada de teclado

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

  • raw_input
  • input

A função raw_input

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 exibirá a mesma string na tela. Quando digitei "Olá, Python!", A saída é esta -

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

A função de entrada

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 para você.

#!/usr/bin/python

str = input("Enter your input: ")
print "Received input is : ", str

Isso produziria o seguinte resultado em relação à 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ê leu e gravou na entrada e na saída padrão. Agora, veremos como usar arquivos de dados reais.

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 umfile objeto.

A função aberta

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

Sintaxe

file object = open(file_name [, access_mode][, buffering])

Aqui estão os detalhes dos parâmetros -

  • file_name - O argumento file_name é um valor de string que contém o nome do arquivo que você deseja acessar.

  • access_mode- O access_mode determina o modo em que o arquivo deve ser aberto, ou seja, ler, escrever, anexar, etc. Uma lista completa de valores possíveis é fornecida abaixo na tabela. Este é um parâmetro opcional e o modo de acesso ao arquivo padrão é read (r).

  • buffering- Se o valor do buffer for definido como 0, nenhum buffer ocorrerá. Se o valor do buffer for 1, o buffer de linha é executado durante o acesso a um arquivo. Se você especificar o valor de buffer como um número inteiro maior que 1, a ação de buffer é executada com o tamanho de buffer indicado. Se negativo, o tamanho do buffer é o padrão do sistema (comportamento padrão).

Aqui está uma lista dos diferentes modos de abrir um arquivo -

Sr. Não. Modos e descrição
1

r

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

2

rb

Abre um arquivo para leitura apenas em 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 gravação. O ponteiro do arquivo colocado no início do arquivo.

4

rb+

Abre um arquivo para leitura e gravação em formato binário. O ponteiro do arquivo colocado no início do arquivo.

5

w

Abre um arquivo apenas para gravação. Substitui o arquivo se ele existir. Se o arquivo não existir, cria um novo arquivo para gravação.

6

wb

Abre um arquivo para gravação apenas em formato binário. Substitui o arquivo se ele existir. Se o arquivo não existir, cria um novo arquivo para gravação.

7

w+

Abre um arquivo para escrita e leitura. Substitui o arquivo existente, se o arquivo existir. Se o arquivo não existir, cria um novo arquivo para leitura e gravação.

8

wb+

Abre um arquivo para gravação e leitura em formato binário. Substitui o arquivo existente, se o arquivo existir. Se o arquivo não existir, cria um novo arquivo para leitura e gravação.

9

a

Abre um arquivo para anexar. O ponteiro do arquivo está no final do arquivo se o arquivo existir. Ou seja, o arquivo está no modo de acréscimo. Se o arquivo não existir, ele cria um novo arquivo para gravação.

10

ab

Abre um arquivo para anexar em formato binário. O ponteiro do arquivo está no final do arquivo se o arquivo existir. Ou seja, o arquivo está no modo de acréscimo. Se o arquivo não existir, ele cria um novo arquivo para gravação.

11

a+

Abre um arquivo para anexar e ler. O ponteiro do arquivo está no final do arquivo se o arquivo existir. O arquivo é aberto no modo anexar. Se o arquivo não existir, ele cria um novo arquivo para leitura e gravação.

12

ab+

Abre um arquivo para anexar e ler em formato binário. O ponteiro do arquivo está no final do arquivo se o arquivo existir. O arquivo é aberto no modo anexar. Se o arquivo não existir, ele cria um novo arquivo para leitura e gravação.

O arquivo Object Attributes

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

Aqui está uma lista de todos os atributos relacionados ao objeto de arquivo -

Sr. Não. Atributo e descrição
1

file.closed

Retorna verdadeiro se o arquivo está fechado, falso caso contrário.

2

file.mode

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

3

file.name

Retorna o nome do arquivo.

4

file.softspace

Retorna falso se o espaço for explicitamente necessário com print, verdadeiro caso contrário.

Exemplo

#!/usr/bin/python

# Open a file
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 de arquivo elimina qualquer informação não escrita e fecha o objeto de arquivo, após o qual nenhuma outra gravação 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

# Open a file
fo = open("foo.txt", "wb")
print "Name of the file: ", fo.name

# Close opend file
fo.close()

Isso produz o seguinte resultado -

Name of the file:  foo.txt

Ler e escrever arquivos

O objeto de arquivo fornece um conjunto de métodos de acesso para tornar nossas vidas mais fáceis. Veríamos como usar os métodos read () e write () para ler e gravar arquivos.

O método write ()

O método write () grava qualquer string em um arquivo aberto. É importante observar que as 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

# Open a file
fo = open("foo.txt", "wb")
fo.write( "Python is a great language.\nYeah its great!!\n")

# Close opend file
fo.close()

O método acima criaria o arquivo foo.txt e escreveria determinado conteúdo nesse arquivo e, finalmente, fecharia esse arquivo. Se você abrir este arquivo, ele terá o seguinte conteúdo.

Python is a great language.
Yeah its great!!

O read () Método

O método read () lê uma string de um arquivo aberto. É importante observar que as 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 inicia a leitura desde o início do arquivo e se não houver contagem , 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

# Open a file
fo = open("foo.txt", "r+")
str = fo.read(10);
print "Read String is : ", str
# Close opend file
fo.close()

Isso produz o seguinte resultado -

Read String is :  Python is

Posições de arquivo

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

O método de busca (deslocamento [, de]) 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 de onde os bytes devem ser movidos.

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

Exemplo

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

#!/usr/bin/python

# Open a file
fo = open("foo.txt", "r+")
str = fo.read(10)
print "Read String is : ", str

# Check current position
position = fo.tell()
print "Current file position : ", position

# Reposition pointer at the beginning once again
position = fo.seek(0, 0);
str = fo.read(10)
print "Again read String is : ", str
# Close opend file
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

Pitão os O módulo fornece métodos que ajudam a executar operações de processamento de arquivo, como renomear e excluir arquivos.

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

O método rename ()

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

Sintaxe

os.rename(current_file_name, new_file_name)

Exemplo

A seguir está o exemplo para renomear um arquivo existente test1.txt -

#!/usr/bin/python
import os

# Rename a file from test1.txt to 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(file_name)

Exemplo

A seguir está o exemplo para excluir um arquivo existente test2.txt -

#!/usr/bin/python
import os

# Delete file test2.txt
os.remove("text2.txt")

Diretórios em Python

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

O Método mkdir ()

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

Sintaxe

os.mkdir("newdir")

Exemplo

A seguir está o exemplo para criar um teste de diretório no diretório atual -

#!/usr/bin/python
import os

# Create a directory "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("newdir")

Exemplo

A seguir está o exemplo para ir para o diretório "/ home / newdir" -

#!/usr/bin/python
import os

# Changing a directory to "/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

A seguir está o exemplo para fornecer o diretório atual -

#!/usr/bin/python
import os

# This would give location of the current directory
os.getcwd()

O método rmdir ()

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

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

Sintaxe

os.rmdir('dirname')

Exemplo

A seguir está o exemplo para remover o diretório "/ tmp / test". É necessário fornecer o nome totalmente qualificado do diretório, caso contrário, ele pesquisaria esse diretório no diretório atual.

#!/usr/bin/python
import os

# This would  remove "/tmp/test"  directory.
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 manipular e manipular arquivos e diretórios nos sistemas operacionais Windows e Unix. Eles são os seguintes -