flysmog.pages.dev

Como dividir um arquivo CSV grande em partes menores?

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.

Pré-requisitos

Passo 1: Criar o script Python

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

Passo 2: Executar o script

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

Exemplo Prático

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

Conclusão

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.