Atualizado: 04/11/2024

Arquivos CSV - Python

Um dos formatos de arquivo mais comuns para armazenar informações de forma organizada é o CSV (Comma Separated Values). Em um arquivo CSV, cada linha representa um registro composto por várias colunas, separadas por vírgulas. Embora seja um formato de arquivo de texto, o Python facilita seu uso com um módulo embutido específico: csv.

Vamos explorar o uso desse módulo com um exemplo:

import csv

FILENAME = "users.csv"

users = [
    ["Tom", 28],
    ["Alice", 23],
    ["Bob", 34]
]

with open(FILENAME, "w", newline="") as file:
    writer = csv.writer(file)
    writer.writerows(users)

with open(FILENAME, "a", newline="") as file:
    user = ["Sam", 31]
    writer = csv.writer(file)
    writer.writerow(user)

Neste exemplo, gravamos uma lista bidimensional em um arquivo, criando uma tabela onde cada linha representa um usuário, com dois campos: nome e idade. Assim, formamos uma tabela com três linhas e duas colunas inicialmente.

Ao abrir o arquivo para escrita, usamos o parâmetro newline="" para evitar problemas de quebra de linha, independentemente do sistema operacional.

Para gravar os dados, obtemos um objeto writer, criado pela função csv.writer(file), que recebe o arquivo aberto como parâmetro. A gravação ocorre com o método writer.writerows(users), que recebe uma lista de linhas (neste caso, uma lista bidimensional).

Caso seja necessário adicionar apenas uma linha, como ["Sam", 31], podemos usar o método writer.writerow(user).

Após a execução do script, o arquivo users.csv terá o seguinte conteúdo:

Tom,28
Alice,23
Bob,34
Sam,31

Para ler os dados do arquivo, criamos um objeto reader:

import csv

FILENAME = "users.csv"

with open(FILENAME, "r", newline="") as file:
    reader = csv.reader(file)
    for row in reader:
        print(row[0], "-", row[1])

Com o objeto reader, podemos iterar por todas as linhas do arquivo e exibir o conteúdo de cada registro:

Tom - 28
Alice - 23
Bob - 34
Sam - 31

Trabalhando com Dicionários

No exemplo anterior, cada linha era representada por uma lista, como ["Sam", 31]. No entanto, o módulo csv também oferece suporte para trabalhar com dicionários. A função csv.DictWriter() cria um objeto writer para gravar dados como dicionários, e csv.DictReader() cria um reader para leitura nesse formato. Vejamos um exemplo:

import csv

FILENAME = "users2.csv"

users = [
    {"name": "Tom", "age": 28},
    {"name": "Alice", "age": 23},
    {"name": "Bob", "age": 34}
]

with open(FILENAME, "w", newline="") as file:
    columns = ["name", "age"]
    writer = csv.DictWriter(file, fieldnames=columns)
    writer.writeheader()
    
    # Gravação de várias linhas
    writer.writerows(users)

    # Gravação de uma linha
    user = {"name": "Sam", "age": 41}
    writer.writerow(user)

Na gravação de dicionários, especificamos os nomes das colunas usando o parâmetro fieldnames, e o cabeçalho é gravado com writeheader(). Assim, o arquivo users2.csv terá colunas com cabeçalho ("name" e "age").

Para leitura, o uso de csv.DictReader() permite acessar os valores de cada linha pelo nome das colunas, como row["name"]:

with open(FILENAME, "r", newline="") as file:
    reader = csv.DictReader(file)
    for row in reader:
        print(row["name"], "-", row["age"])

Neste exemplo, cada linha do arquivo é lida como um dicionário, e podemos acessar os valores diretamente pelos nomes das colunas, facilitando a leitura e manipulação dos dados.

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com