Quando se lida com arquivos CSV de centenas de megabytes ou gigabytes, abrir e manipular esses dados pode se tornar um desafio para a maioria dos softwares. Um script simples e eficiente é a melhor maneira de automatizar o processo, garantindo que cada parte seja idêntica à original e pronta para uso.
Para dividir o arquivo, utilizaremos o módulo csv do Python, que lida de forma nativa com arquivos separados por vírgula. O script abaixo lê o arquivo original, mantém o cabeçalho em cada parte e grava os dados em arquivos menores de tamanho definido.
import csv
import os
def dividir_csv(arquivo_entrada, tamanho_parte):
with open(arquivo_entrada, 'r', encoding='utf-8') as arquivo:
leitor = csv.reader(arquivo)
cabecalho = next(leitor)
parte = 1
contador_linhas = 0
escritor = None
for linha in leitor:
if contador_linhas % tamanho_parte == 0:
if escritor:
escritor.close()
nome_saida = f"{os.path.splitext(arquivo_entrada)[0]}_parte{parte}.csv"
escritor = open(nome_saida, 'w', encoding='utf-8', newline='')
escritor_csv = csv.writer(escritor)
escritor_csv.writerow(cabecalho)
parte += 1
escritor_csv.writerow(linha)
contador_linhas += 1
if escritor:
escritor.close()
# Exemplo de uso:
dividir_csv('dados.csv', 10000) # Divide em partes de 10.000 linhas cada
Abra o terminal, navegue até a pasta onde o script foi salvo e execute o comando abaixo, substituindo dados.csv pelo nome do seu arquivo e 10000 pelo número desejado de linhas por parte.
python dividir_csv.py
Considere um arquivo dados.csv com 25.000 linhas de dados (incluindo o cabeçalho). Ao executar o script com tamanho_parte = 10000, serão gerados três arquivos:
| Arquivo Gerado | Linhas de Dados (excluindo cabeçalho) |
|---|---|
| dados_parte1.csv | 10.000 |
| dados_parte2.csv | 10.000 |
| dados_parte3.csv | 5.000 |
Com este script, você automatiza a divisão de arquivos CSV grandes em partes menores e gerenciáveis em apenas alguns segundos, eliminando a necessidade de processamento manual e evitando erros de formatação.