Trabalhando com Diferentes Modos de Arquivo
Deslize para mostrar o menu
Aprenda a utilizar diferentes modos de arquivo em Python para leitura, escrita e anexação de arquivos com exemplos práticos.
Os modos de arquivo em Python incluem: 'r' para leitura, 'w' para escrita (cria/trunca), 'a' para anexação (cria se não existir), 'b' para modo binário e '+' para leitura/escrita. Escolha o modo correto para evitar perda de dados.
Modo de Leitura
O modo de leitura ('r') abre um arquivo existente apenas para leitura. Não é possível escrever ou modificar o arquivo ao usar este modo. Se o arquivo não existir, o Python irá gerar um FileNotFoundError. Utilize este modo quando desejar acessar e ler dados de um arquivo sem alterar seu conteúdo.
123456with open("sample.txt", "w") as f: f.write("This is a sample file.\nSecond line.") with open("sample.txt", "r") as f: content = f.read() print(content)
Este código cria um arquivo de texto com conteúdo de exemplo e, em seguida, lê e exibe o conteúdo do arquivo.
Modo de Escrita
O modo de escrita (w) em Python abre um arquivo para escrita. Utilize o modo w quando desejar começar um arquivo do zero, seja criando um novo ou limpando um arquivo existente para substituir seu conteúdo. Atenção: todos os dados existentes no arquivo serão perdidos ao abri-lo com o modo w.
1234567891011with open("write_example.txt", "w") as file: file.write("This file was created or overwritten using write mode.\n") with open("write_example.txt", "r") as file: print(file.read()) with open("write_example.txt", "w") as file: file.write("Every time you run this code, the contents are replaced.\n") with open("write_example.txt", "r") as file: print(file.read())
Este código mostra o conteúdo do arquivo após a primeira escrita e depois após a sobrescrita, permitindo observar como os dados anteriores são apagados e substituídos por novo conteúdo.
Modo de Acrescentar
O modo de acrescentar, especificado pelo modo de arquivo 'a', abre um arquivo para escrita adicionando novo conteúdo ao final do arquivo. Se o arquivo não existir, ele será criado automaticamente. Este modo é útil quando se deseja preservar os dados existentes e simplesmente adicionar mais informações ao final, como registrar novas entradas ou atualizar registros ao longo do tempo. Diferente do modo de escrita ('w'), o modo de acrescentar nunca remove ou sobrescreve o conteúdo existente.
123456789with open("append_example.txt", "w") as f: f.write("Original line\n") with open("append_example.txt", "a") as f: f.write("Appended line\n") with open("append_example.txt", "r") as f: result = f.read() print(result.strip())
Este código primeiro cria um arquivo com um conteúdo inicial. Em seguida, abre o mesmo arquivo no modo de anexação ('a') para adicionar uma nova linha ao final. Por fim, lê e imprime todo o conteúdo do arquivo para que você possa ver que os novos dados foram adicionados ao final sem excluir ou modificar o conteúdo original.
Modo Binário
O modo binário é utilizado quando é necessário ler ou gravar arquivos como bytes em vez de texto. Isso é essencial para trabalhar com arquivos não textuais, como imagens, arquivos de áudio ou executáveis. Você combina 'b' com outros modos de arquivo, como 'rb' para leitura em modo binário ou 'wb' para escrita em modo binário.
Ao abrir um arquivo em modo binário, os dados são lidos e gravados exatamente como bytes brutos. Não ocorre codificação ou decodificação, portanto, é necessário manipular os dados como objetos do tipo bytes. Isso evita problemas que podem surgir ao ler ou gravar arquivos que não utilizam codificação de texto padrão.
12345678byte_data = b"\x48\x65\x6c\x6c\x6f, binary world!" # This is 'Hello, binary world!' in bytes with open("sample_binary.bin", "wb") as f: f.write(byte_data) with open("sample_binary.bin", "rb") as f: read_bytes = f.read() print(read_bytes)
O código grava uma string de bytes contendo a mensagem 'Hello, binary world!' em um arquivo chamado sample_binary.bin usando o modo de escrita binária ('wb'). O b no modo garante que o arquivo seja tratado como dados binários, e não como texto. Após a gravação, o arquivo é aberto novamente em modo de leitura binária ('rb') para ler os bytes brutos. O código então imprime a representação legível do objeto bytes.
Modo de Leitura e Escrita
O modo de arquivo r+ permite tanto ler quanto escrever em um arquivo existente. Ao abrir um arquivo com r+, é possível ler seu conteúdo, modificá-lo ou adicionar novos dados em qualquer posição. No entanto, o arquivo já deve existir - r+ não criará um novo arquivo se não encontrar um com o nome especificado.
Esse modo é útil quando é necessário atualizar ou processar dados em um arquivo sem perder o conteúdo existente. Qualquer operação de escrita começará a partir da posição atual do arquivo, permitindo controlar exatamente onde as alterações ocorrerão utilizando métodos do ponteiro de arquivo, como seek().
1234567891011121314151617# Writing initial content to the file with open("data.txt", "w") as f: f.write("First line\nSecond line\n") # Opening the file in r+ mode for reading and updating with open("data.txt", "r+") as f: # Reading and printing the original content original_content = f.read() print("Before update:\n" + original_content.strip()) # Moving file pointer to the beginning f.seek(0) # Overwriting the first line f.write("Updated first line\n") # Moving pointer to the start to read the updated content f.seek(0) updated_content = f.read() print("After update:\n" + updated_content.strip())
Esta saída demonstra que a primeira linha do arquivo foi sobrescrita com sucesso. Utilizando o modo de leitura e escrita ('r+'), é possível atualizar partes específicas de um arquivo – como alterar apenas a primeira linha – sem apagar ou reescrever todo o conteúdo. Isso é útil para editar dados existentes enquanto preserva o restante do conteúdo do arquivo.
Ao usar o modo 'r+', qualquer novo dado escrito irá sobrescrever o conteúdo existente a partir da posição atual do ponteiro do arquivo. Se o novo conteúdo for menor que o original, a parte restante da linha antiga permanece no arquivo. Isso significa que fragmentos do conteúdo anterior ainda podem aparecer após a nova escrita. O arquivo não é truncado automaticamente, portanto, caracteres extras do conteúdo original podem persistir além do final dos novos dados.
1. Qual modo de arquivo deve ser utilizado se você deseja ler um arquivo de texto existente sem modificá-lo?
2. Qual modo de arquivo deve ser usado para adicionar novos dados ao final de um arquivo de texto existente sem apagar seu conteúdo atual?
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo