Um script simples, mas eficiente em Python.
O que ele faz:
- Percorre múltiplos arquivos automaticamente
- Tenta ler em UTF-8 (com fallback para latin1)
- Salva cada arquivo convertido na mesma pasta
- Exibe progresso em tempo real (% concluído)
Ideal para quem trabalha com importação no MySQL, dados da Receita ou arquivos legados.
import os
arquivos = [
r"C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\estabelecimentos\Estabelecimentos0\K3241.K03200Y0.D51108.ESTABELE",
r"C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\estabelecimentos\Estabelecimentos1\K3241.K03200Y1.D60214.ESTABELE",
r"C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\estabelecimentos\Estabelecimentos2\K3241.K03200Y2.D60214.ESTABELE",
r"C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\estabelecimentos\Estabelecimentos3\K3241.K03200Y3.D60214.ESTABELE",
r"C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\estabelecimentos\Estabelecimentos4\K3241.K03200Y4.D60214.ESTABELE",
r"C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\estabelecimentos\Estabelecimentos5\K3241.K03200Y5.D60214.ESTABELE",
r"C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\estabelecimentos\Estabelecimentos6\K3241.K03200Y6.D60214.ESTABELE",
r"C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\estabelecimentos\Estabelecimentos7\K3241.K03200Y7.D60214.ESTABELE",
r"C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\estabelecimentos\Estabelecimentos8\K3241.K03200Y8.D60214.ESTABELE",
r"C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\estabelecimentos\Estabelecimentos9\K3241.K03200Y9.D60214.ESTABELE",
]
total = len(arquivos)
for i, arquivo_origem in enumerate(arquivos, start=1):
try:
print(f"\nProcessando: {arquivo_origem}")
pasta = os.path.dirname(arquivo_origem)
nome = os.path.basename(arquivo_origem)
destino = os.path.join(pasta, nome + ".utf8.csv")
# Descobrir encoding
try:
open(arquivo_origem, "r", encoding="utf-8").read(1000)
encoding = "utf-8"
except:
encoding = "latin1"
print(f"Encoding detectado: {encoding}")
# Converter em streaming
with open(arquivo_origem, "r", encoding=encoding, errors="ignore") as origem, \
open(destino, "w", encoding="utf-8") as saida:
for j, linha in enumerate(origem, start=1):
saida.write(linha)
if j % 500000 == 0:
print(f" {j} linhas processadas...")
progresso = (i / total) * 100
print(f"[{progresso:.1f}%] Concluído: {destino}")
except Exception as e:
print(f"Erro: {e}")
print("\nFINALIZADO")
Comentários
Postar um comentário