A codificação de caracteres refere-se à conversão entre bytes e texto. Diferentes sistemas usam codificações variadsa, como ASCII para inglês ou GBK para chinês, o que pode causar incompatibilidades. O Unicode surgiu para unificar essas representações, e o UTF-8 é uma codificação eficiente baseada nele, compatível com ASCII e adequada para armazenamento em disco.
Diferenças de Codificação entre Python 2 e Python 3
No Python 2, strings são armazenadas com a codificação especificada no arquivo. No Python 3, strings internas usam Unicode por padrão, melhroando a compatibilidade internacional. Ao trabalhar com arquivos, é crucial usar a codificação correta durante leitura e escrita.
Modos de Abertura de Arquivos
Arquivos podem ser abertos em três modos principais: r (somente leitura), w (escrita, apaga conteúdo existente) e a (anexar). Esses modos podem ser combinados com especificadores de tipo: t para texto (padrão) e b para binário.
O gerenciamento de contexto com with garante o fechamento automático do arquivo após o uso.
Técnicas para Modificar Conteúdo de Arquivos
Modificar um arquivo no disco envolve geralmente criar uma cópia temporária. Duas abordagens comuns são:
Abordagem por Carregamento Completo
Todo o conteúdo é carregado na memória, alterado e salvo em um novo arquivo. Isso é eficiente para arquivos pequenos, mas pode consumir muita memória.
import os
with open('dados.txt', 'r') as arquivo_origem, \
open('temporario.txt', 'w') as arquivo_temp:
conteudo = arquivo_origem.read()
conteudo_modificado = conteudo.replace('valor_antigo', 'valor_novo')
arquivo_temp.write(conteudo_modificado)
os.remove('dados.txt')
os.rename('temporario.txt', 'dados.txt')
Abordagem por Linha
O arquivo é lido linha a linha, permitindo modificações progressivas e uso menor de memória.
import os
with open('dados.txt', 'r') as arquivo_origem, \
open('temporario.txt', 'w') as arquivo_temp:
for linha in arquivo_origem:
linha_corrigida = linha.replace('erro', 'correcao')
arquivo_temp.write(linha_corrigida)
os.remove('dados.txt')
os.rename('temporario.txt', 'dados.txt')
Definição de Funções em Python
Funções são blocos de código reutilizáveis. Elas podem ser definidas de três maneiras:
Função sem Parâmetros
Usada quando nenhuma entrada externa é necessária.
def exibir_mensagem():
print("Olá, usuário!")
exibir_mensagem()
Função com Parâmetros
Recebe dados externos para processamento.
def calcular_soma(a, b):
resultado = a + b
return resultado
total = calcular_soma(5, 3)
print(total) # Saída: 8
Função Vazia (Stub)
Placeholder para implementação futura.
def processar_dados():
pass # Implementação pendente