Este tutorial fornece um guia abrangente para manipulação de arquivos em Python. Arquivos são cruciais para armazenamento e recuperação de dados persistentes, permitindo que seus programas interajam com dados além de seu tempo de execução. Abordaremos operações fundamentais de arquivos, desde abrir e fechar arquivos até ler, escrever, renomear e excluí-los. Também exploraremos as melhores práticas para tratamento de erros e gerenciamento eficiente de arquivos.
Sumário:
- Abrindo Arquivos
- Objetos de Arquivo e Gerenciadores de Contexto
- Escrevendo em Arquivos
- Lendo de Arquivos
- Operações do Sistema de Arquivos: Renomeando e Excluindo
- Tratando Exceções
1. Abrindo Arquivos
A função open()
é a pedra angular da interação com arquivos em Python. Ela recebe o nome do arquivo (uma string) e um modo como argumentos principais. O modo determina como o arquivo será acessado (leitura, escrita, anexação, etc.).
Modos comuns incluem:
'r'
: Leitura (padrão). Abre para leitura. Gera um erro se o arquivo não existir.'w'
: Escrita. Abre para escrita. Sobrescreve o arquivo se ele existir; cria-o se não existir.'a'
: Anexar. Abre para escrita. Anexa dados ao final se o arquivo existir; cria-o se não existir.'x'
: Criação exclusiva. Cria um novo arquivo. Gera um erro se o arquivo já existir.'b'
: Modo binário. Para arquivos não-texto (imagens, executáveis). Pode ser combinado com outros modos (por exemplo,'rb'
,'wb'
).'t'
: Modo texto (padrão). Para arquivos de texto.
# Abre um arquivo para escrita
file = open("meu_arquivo.txt", "w")
# Abre um arquivo para leitura
file = open("meu_arquivo.txt", "r")
# Abre um arquivo em modo binário para leitura
file = open("imagem.jpg", "rb")
2. Objetos de Arquivo e Gerenciadores de Contexto
open()
retorna um objeto de arquivo, fornecendo métodos para interação com o arquivo. Uma prática recomendada crucial é usar gerenciadores de contexto (instrução with
) para garantir que os arquivos sejam fechados automaticamente, mesmo que ocorram erros:
with open("meu_arquivo.txt", "w") as file:
file.write("Este é algum texto.n") # Arquivo fechado automaticamente após este bloco
with open("meu_arquivo.txt", "r") as file:
conteudo = file.read()
print(conteudo)
3. Escrevendo em Arquivos
O método write()
escreve uma string no arquivo. Para escrever várias linhas, use n
para novas linhas.
with open("meu_arquivo.txt", "w") as file:
file.write("Linha 1n")
file.write("Linha 2n")
4. Lendo de Arquivos
Vários métodos lêem dados do arquivo:
read()
: Lê todo o conteúdo do arquivo em uma única string.readline()
: Lê uma única linha.readlines()
: Lê todas as linhas em uma lista de strings.- Iteração: Você pode iterar diretamente sobre um objeto de arquivo para ler linhas uma a uma.
with open("meu_arquivo.txt", "r") as file:
conteudo = file.read()
print(conteudo)
file.seek(0) # Redefine o ponteiro do arquivo
linha = file.readline()
print(linha)
file.seek(0) # Redefine o ponteiro do arquivo
linhas = file.readlines()
print(linhas)
file.seek(0) # Redefine o ponteiro do arquivo
for linha in file:
print(linha, end="") #end="" evita nova linha extra
5. Operações do Sistema de Arquivos: Renomeando e Excluindo
O módulo os
fornece funções para manipulação do sistema de arquivos:
import os
# Renomeia um arquivo
os.rename("meu_arquivo.txt", "novo_arquivo.txt")
# Remove um arquivo
os.remove("novo_arquivo.txt")
6. Tratando Exceções
Sempre trate possíveis exceções (FileNotFoundError
, IOError
, etc.) ao trabalhar com arquivos:
try:
with open("meu_arquivo.txt", "r") as file:
# ... operações com arquivo ...
except FileNotFoundError:
print("Arquivo não encontrado.")
except IOError as e:
print(f"Ocorreu um erro de I/O: {e}")