Quando arquivos de texto apresentam caracteres corrompidos ou ilegíveis, o problema geralmente está relacionado a um encoding incorreto. Com um script Python bem estruturado, é possível detectar e corrigir automaticamente esses erros, economizando tempo e evitando retrabalho manual.
O primeiro passo é identificar o encoding atual do arquivo. A biblioteca chardet é ideal para isso, pois analisa o conteúdo e sugere o encoding mais provável.
import chardet
def detect_encoding(file_path):
with open(file_path, 'rb') as file:
raw_data = file.read()
result = chardet.detect(raw_data)
return result['encoding']
# Exemplo de uso
file_path = 'arquivo_corrompido.txt'
encoding = detect_encoding(file_path)
print(f'Encoding detectado: {encoding}')
Após detectar o encoding, o próximo passo é ler o arquivo usando esse encoding. Se houver erros de leitura, podemos usar a opção errors='replace' para substituir caracteres inválidos.
def read_file(file_path, encoding):
try:
with open(file_path, 'r', encoding=encoding, errors='replace') as file:
content = file.read()
return content
except Exception as e:
print(f'Erro ao ler o arquivo: {e}')
return None
content = read_file(file_path, encoding)
Com o conteúdo lido, podemos reescrever o arquivo usando um encoding padrão, como UTF-8, para garantir compatibilidade futura.
def correct_encoding(file_path, content):
corrected_file = 'arquivo_corrigido.txt'
with open(corrected_file, 'w', encoding='utf-8') as file:
file.write(content)
print(f'Arquivo corrigido salvo como: {corrected_file}')
correct_encoding(file_path, content)
Agora, vamos combinar todos os passos em um único script Python para automatizar o processo.
import chardet
def detect_encoding(file_path):
with open(file_path, 'rb') as file:
raw_data = file.read()
result = chardet.detect(raw_data)
return result['encoding']
def read_file(file_path, encoding):
try:
with open(file_path, 'r', encoding=encoding, errors='replace') as file:
content = file.read()
return content
except Exception as e:
print(f'Erro ao ler o arquivo: {e}')
return None
def correct_encoding(file_path, content):
corrected_file = 'arquivo_corrigido.txt'
with open(corrected_file, 'w', encoding='utf-8') as file:
file.write(content)
print(f'Arquivo corrigido salvo como: {corrected_file}')
def main(file_path):
encoding = detect_encoding(file_path)
print(f'Encoding detectado: {encoding}')
content = read_file(file_path, encoding)
if content:
correct_encoding(file_path, content)
else:
print('Não foi possível corrigir o arquivo.')
if __name__ == '__main__':
file_path = 'arquivo_corrompido.txt'
main(file_path)
| Arquivo Original | Encoding Detectado | Arquivo Corrigido |
|---|---|---|
| arquivo_corrompido.txt | ISO-8859-1 | arquivo_corrigido.txt |
Com este script Python, você automatiza a detecção e correção de encoding de arquivos de texto em segundos, eliminando a necessidade de intervenção manual e garantindo que seus dados estejam sempre legíveis e compatíveis.