Como executar operações de entrada/saída Python em arquivos com função aberta do Python
- 723
- 72
- Maurice Champlin
A manipulação de arquivos é uma operação que mais cedo ou mais tarde precisaremos executar em nossos programas. O python embutido abrir
Função retorna a objeto de arquivo
, que nos permite interagir com arquivos em diferentes modos: nós os veremos neste artigo.
Neste tutorial em Python, você aprenderá:
- Como usar a função aberta do Python.
- Quais são os vários modos de operação que podem ser usados com a função aberta do Python.
- Como interagir com um objeto de arquivo.
- Por que é importante fechar um objeto de arquivo e como fazê -lo.
Requisitos de software e convenções usadas
Categoria | Requisitos, convenções ou versão de software usada |
---|---|
Sistema | Independente do OS |
Programas | Python3 |
Outro | Nenhuma permissões especiais necessárias. |
Convenções | # - requer que os comandos Linux sejam executados com privilégios root diretamente como usuário root ou por uso de sudo comando$ - Requer que os comandos do Linux sejam executados como um usuário não privilegiado regular >>> - comandos python a serem executados em uma concha interativa |
Declarações de entrada e saída Python
Há muitas razões pelas quais um programa pode precisar interagir com arquivos: leitura de configurações e configurações que influenciarão o comportamento do próprio programa, ou talvez dados persistentes. Neste tutorial, veremos como realizar essas tarefas, usando a função aberta do Python e interagindo com objetos de arquivo
.
A função aberta do Python
Antes de começar a ler ou escrever arquivos, precisamos aprender como podemos acessá -los. A função aberta do Python abre um arquivo e retorna um objeto de arquivo
, levantando um OSERROR
exceção se o recurso não puder ser acessado. A função tem apenas um argumento obrigatório, arquivo
, que é a string ou objeto de byte que representa o caminho do arquivo a ser aberto:
>>> fobject = Open ('LinuxConfig.TXT')
cópia de Modo de leitura - 'r'
Nós abrimos o LinuxConfig.TXT
arquivo e o objeto de arquivo resultante agora é referenciado por fobject
. É um python Objeto de arquivo
que implementa métodos como escrever
e ler
. E se o LinuxConfig.TXT
arquivo não existia? A FILENOTFoundError
Exceção seria levantada:
>>> fobject = Open ('LinuxConfig.txt ') traceback (chamada mais recente): arquivo "", linha 1, em FILENOTFoundError: [Errno 2] Nenhum arquivo ou diretório: 'LinuxConfig.TXT'
cópia de Como acabamos de dizer acima, o único argumento obrigatório da função aberta do Python é arquivo
. Quando usado como no exemplo acima, a função opera em modo de texto
e um arquivo é aberto apenas para leitura. O equivalente detalhado do que fizemos acima é:
>>> fobject = Open ('LinuxConfig.txt ',' rt ')
cópia de O segundo argumento da função é o modo
. Nesse caso, 'rt'
, onde o 'r'
apoia ler
e a 't'
especifica que estamos operando no modo de texto. Também é possível abrir arquivos no modo binário, substituindo 't'
com 'B'
: Nesse caso, o conteúdo de bytes, sem qualquer codificação, será devolvido. Desde 't'
é o modo padrão, a partir de agora, vamos omitir. Para ler o conteúdo do arquivo que podemos usar, por exemplo, o ler
método. Ele retornará todo o conteúdo do arquivo como uma string:
>>> fobject.leia () 'LinuxConfig é incrível!\ n '
cópia de Quando está operando no modo de leitura, qualquer tentativa de escrever para o arquivo aumentará um io.Não suportado operação
exceção:
>>> fobject.Write ('LinuxConfig é incrível!') Traceback (chamada mais recente): arquivo "", linha 1, em io.Não suportado operador: não gravável
cópia de Obviamente, este não é o único modo disponível. Vamos ver os outros.
Modo de gravação - 'W'
Ao especificar 'c'
Como o valor do modo
argumento do abrir
função, se o arquivo existir, é o primeiro truncado
(seu conteúdo inteiro é descartado) e depois é aberto para escrever; Se o arquivo não existir, é criado. Nesse caso, usamos o escrever
Método do objeto de arquivo:
>>> fobject = Open ('LinuxConfig.txt ',' w ') >>> fobject.Write ('Acabamos de escrever no arquivo!') 26 >>> fobject.fechar()
cópia de Abrimos o arquivo para escrever, do que usamos o escrever
Método do objeto de arquivo, que escreve a string e retorna o número de caracteres escritos, 26 neste caso, finalmente usamos o fechar
Método para fechar o objeto: esta etapa é realmente importante, uma vez que a operação de gravação se torna efetiva apenas quando o conteúdo do arquivo for liberado (veremos a importância de fechar um objeto de arquivo no final do tutorial). Se agora examinarmos o conteúdo do arquivo, vemos que seu conteúdo anterior foi substituído e ele contém apenas a string:
'Acabamos de escrever para o arquivo!'
Como aconteceu acima, se tentarmos executar uma operação não permitida pelo modo de operação, uma exceção é aumentada. Nesse caso, se tentarmos ler o conteúdo do arquivo, obtemos o seguinte resultado:
>>> fobject = Open ('LinuxConfig.txt ',' w ') >>> fobject.Leia () Traceback (Chamada mais recente): Arquivo "", linha 1, em IO.UnsupportDoperation: não é legível
cópia de Anexando a um arquivo: 'a' modo
E se quisermos anexar um arquivo, mantendo seu conteúdo atual? Temos que usar o 'a'
Modo (Apêndice). Quando esse modo é usado, se existir um arquivo, ele será aberto para escrever e o fluxo está posicionado no final. Dessa forma, o conteúdo anterior do arquivo será preservado. Se o arquivo não existir, ele será criado:
>>> fobject = Open ('LinuxConfig.txt ',' a ') >>> fobject.Write ('texto anexado!') 14 >>> fobject.fechar()
cópia de Abrimos o arquivo em 'a'
modo e escreva a string 'texto anexado' para o arquivo. O conteúdo anterior não foi truncado:
LinuxConfig é incrível! Texto anexado!
O modo 'x' - criação exclusiva
Este modo de abertura está disponível apenas no Python3. Quando é usado, um FileExistSerror
é levantado se o arquivo já existir. Se o arquivo não existir, ele será criado e aberto para escrever:
fileObject = aberto ('LinuxConfig.txt ',' x ') traceback (chamada mais recente): arquivo "", linha 1, em FileExistSerror: [Errno 17] Existe: 'LinuxConfig.TXT'
cópia de Cada vez que escrevemos algo, ele é anexado ao conteúdo anterior, até fecharmos o objeto de arquivo:
>>> fileObject = aberto ('LinuxConfig1.txt ',' x ') >>> FileObject.Write ('LinuxConfig é incrível novamente \ n') >>> FileObject.Write ('Repito: LinuxConfig é incrível!\ n ') >>> FileObject.fechar()
cópia de Depois de executar o código acima, o novo conteúdo do arquivo será:
LinuxConfig é incrível! Repito: LinuxConfig é incrível!
O personagem '+'
Vimos os modos básicos que podem ser usados com o abrir
função e como eles funcionam. Anexando o '+'
personagem para cada um deles, podemos obter novos comportamentos.
O modo 'r+'
Ao anexar o caractere '+' ao modo 'r' ('r+'), um arquivo é aberto para leitura e escrita; Uma exceção é levantada se o arquivo não existir. O fluxo está posicionado no início do arquivo; portanto, se algo for escrito, ele substituirá o conteúdo anterior. Se estamos nesse modo, mas ainda assim queremos que o novo conteúdo seja anexado, reservando o existente, devemos alterar a posição atual usando o procurar
Método do objeto de arquivo antes de escrever, da seguinte maneira:
>>> fileObject = aberto ('LinuxConfig.txt ',' r+'): >>> FileObject.procurar (0,2) >>> FileObject.Write ('Este texto será anexado') >>> FileObject.fechar()
cópia de O procurar
o método leva dois argumentos: o primeiro é o desvio
, o segundo é a posição a partir da qual o deslocamento deve ser calculado, onde 0
(o padrão se esse argumento for omitido) é o começo do arquivo, 1
é o deslocamento atual e 2
é o fim do arquivo. Nesse caso, usamos um deslocamento de 0 do final do arquivo, mudando -se para o final do próprio arquivo. Observe que especificar um deslocamento diferente de zero neste caso teria aumentado um io.Não suportado operação
Exceção, pois é impossível fazer uma busca diferente de zero e final.
O modo 'w+'
Este modo funciona da seguinte maneira: o arquivo será aberto para leitura e escrita. Se o arquivo existir, seu conteúdo será truncado, caso contrário, o arquivo será criado. Assim como o exemplo anterior, será possível ler e escrever o arquivo, no entanto, existem duas grandes diferenças: a primeira é que o conteúdo do arquivo será truncado assim que for aberto (e não se você ativo, escreva algo para é), o segundo é que o arquivo será criado se não existir.
O modo 'A+'
Ao especificar esse modo com a função aberta do Python, obtemos o seguinte comportamento: Assim como nos exemplos anteriores, o arquivo é aberto tanto para leitura quanto para escrever, no entanto, o fluxo está posicionado no final do arquivo, portanto, qualquer novo conteúdo é anexado ao existente.
Duas coisas devem ser observadas: como o fluxo está posicionado no final do arquivo, se tentarmos usar o ler
Método no objeto de arquivo para obter o conteúdo atual, ele retornará uma string vazia. Para poder ler o conteúdo, devemos primeiro passar para o início do arquivo, usando o método de busca da seguinte maneira:
FileObject.procure (0)
cópia de A segunda coisa muito importante a perceber é que, ao usar esse modo, mesmo se mudarmos para o início do arquivo, como fizemos no exemplo acima e executamos uma gravação, o conteúdo existente que não está perdido: o novo conteúdo está sempre anexado.
Fechando o objeto de arquivo
Depois de terminarmos de trabalhar com nosso objeto de arquivo, devemos sempre lembrar de fechá -lo, por vários motivos. No Primis, porque algumas operações, como escrever, tornam -se efetivas apenas quando o objeto de arquivo é fechado e seu conteúdo é liberado, secundariamente para os recursos livres do sistema e para a clareza do código. Existem duas maneiras de fechar um objeto de arquivo: o primeiro é chamando o fechar
método no objeto de arquivo, como vimos acima. O segundo, é usando o com
declaração:
com open ('LinuxConfig.txt ',' r ') como arquivo fileObject: content = FileObject.leia () # execute as operações necessárias
cópia de O que acontece nesse caso? Usando esta afirmação, a expressão ao lado de com
, nesse caso Open ('LinuxConfig.txt ',' r ')
, é avaliado em um objeto de arquivo, que suporta o protocolo de gerenciador de contexto, pois implementa o __digitar__
e __saída__
métodos. O objeto de arquivo é então alias para FileObject
. Depois que o código contido no bloco é executado, o __saída__
o método do objeto de arquivo é chamado automaticamente e o objeto de arquivo está fechado. Usar um gerente de contexto é realmente útil, porque o objeto será sempre fechado assim que terminarmos de operar nele: uma coisa a menos a lembrar.
Conclusões
Neste tutorial, aprendemos a usar o python embutido abrir
função para criar um objeto de arquivo, usado para interagir com um arquivo. Vimos os vários modos que podem ser passados para a função e como eles mudam o comportamento do objeto de arquivo. Por fim, vimos por que é importante fechar sempre um objeto de arquivo depois de terminarmos de trabalhar com ele, como podemos fazê -lo usando o fechar
método e como pode ser feito automaticamente, se usarmos o com
declaração e um gerente de contexto. Como sempre sugerido, você pode consultar a documentação oficial para melhorar ainda mais seu conhecimento.
Veja também nosso tutorial mais extenso do Python para mais conceitos relacionados ao Python ou nossos arquivos de leitura e escrita com Python Guide.
Tutoriais do Linux relacionados:
- Manipulando a entrada do usuário em scripts bash
- Mastering Bash Script Loops
- Arquivos de configuração do Linux: os 30 primeiros mais importantes
- Manipulação de big data para diversão e lucro Parte 1
- Manipulação de big data para diversão e lucro Parte 3
- Uma introdução à automação, ferramentas e técnicas do Linux
- Coisas para instalar no Ubuntu 20.04
- Mint 20: Melhor que o Ubuntu e o Microsoft Windows?
- Manipulação de big data para diversão e lucro Parte 2
- Como montar a imagem ISO no Linux
- « Como interagir com os contêineres do Docker
- Como instalar o NextCloud no Ubuntu 18.04 Bionic Beaver Linux »