Python 3 - Arquivos de E / S
Este capítulo cobre todas as funções básicas de I / O disponíveis no Python 3. Para 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/python3
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 2 tem duas funções integradas para ler dados da entrada padrão, que por padrão vem do teclado. Essas funções sãoinput() e raw_input()
No Python 3, a função raw_input () está obsoleta. Além disso, as funções input () lêem os dados do teclado como string, independentemente de estarem entre aspas ('' ou "") ou não.
A função de entrada
o input([prompt]) function é 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/python3
>>> x = input("something:")
something:10
>>> x
'10'
>>> x = input("something:")
something:'10' #entered data treated as string with or without ''
>>> x
"'10'"
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. | Modo 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 a um 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. |
Note - o atributo softspace não é compatível com Python 3.x
Exemplo
#!/usr/bin/python3
# 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)
fo.close()
Isso produz o seguinte resultado -
Name of the file: foo.txt
Closed or not : False
Opening mode : wb
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 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/python3
# Open a file
fo = open("foo.txt", "wb")
print ("Name of the file: ", fo.name)
# Close opened 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 usarread() e write() métodos para ler e gravar arquivos.
O método write ()
o write()método 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/python3
# Open a file
fo = open("foo.txt", "w")
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ê abrisse este arquivo, ele teria o seguinte conteúdo -
Python is a great language.
Yeah its great!!
Método read ()
o read()método 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/python3
# Open a file
fo = open("foo.txt", "r+")
str = fo.read(10)
print ("Read String is : ", str)
# Close opened 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 no 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. ooffsetargumento indica o número de bytes a serem movidos. ofrom argumento especifica a posição de referência de onde os bytes devem ser movidos.
Se de for definido como 0, o início do arquivo é usado como a posição de referência. Se for definido como 1, a posição atual é usada como posição de referência. Se for definido como 2, o final do arquivo será considerado a posição de referência.
Exemplo
Vamos pegar um arquivo foo.txt , que criamos acima.
#!/usr/bin/python3
# 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 opened 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 importá-lo primeiro e, em seguida, pode chamar quaisquer funções relacionadas.
O método rename ()
o rename() método 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á um exemplo para renomear um arquivo existente test1.txt -
#!/usr/bin/python3
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 remove() método para excluir arquivos, fornecendo o nome do arquivo a ser excluído como o argumento.
Sintaxe
os.remove(file_name)
Exemplo
A seguir está um exemplo para excluir um arquivo existente test2.txt -
#!/usr/bin/python3
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 mkdir() método do osmó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á um exemplo para criar um teste de diretório no diretório atual -
#!/usr/bin/python3
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á um exemplo para ir para o diretório "/ home / newdir" -
#!/usr/bin/python3
import os
# Changing a directory to "/home/newdir"
os.chdir("/home/newdir")
O método getcwd ()
o getcwd() método exibe o diretório de trabalho atual.
Sintaxe
os.getcwd()
Exemplo
A seguir está um exemplo para fornecer o diretório atual -
#!/usr/bin/python3
import os
# This would give location of the current directory
os.getcwd()
O método rmdir ()
o rmdir() método 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á um exemplo para remover o diretório "/ tmp / test". É necessário fornecer o nome completo do diretório, caso contrário, ele pesquisaria esse diretório no diretório atual.
#!/usr/bin/python3
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 -
-
o file objeto fornece funções para manipular arquivos.
Métodos de objeto de sistema operacional
Isso fornece métodos para processar arquivos e diretórios.