0Pricing
Python Academy · Aula

Escrita de CSV com csv.DictWriter

Escreva dados estruturados em CSV usando DictReader e DictWriter.

Escrita de CSV com csv.DictWriter é uma aula grátis de Python Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Python Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Python Academy inclui 4 aulas no total.

Introdução

csv.writer e csv.DictWriter escrevem dados do Python no formato CSV, lidando automaticamente com aspas e delimitadores.

Noções básicas de csv.writer

csv.writer(f).writerow(row) escreve uma única linha. writerows(rows) escreve várias.
import csv, io
buf = io.StringIO()
writer = csv.writer(buf)
writer.writerow(['name', 'age'])
writer.writerow(['Alice', 30])
print(buf.getvalue())

Comportamento das aspas

Por padrão, campos com vírgulas ou aspas são automaticamente colocados entre aspas. quoting=csv.QUOTE_ALL coloca todos os campos entre aspas.
import csv, io
buf = io.StringIO()
writer = csv.writer(buf, quoting=csv.QUOTE_ALL)
writer.writerow(['Alice', 'NYC, NY', 30])
print(buf.getvalue())

csv.DictWriter

DictWriter escreve dicionários como linhas. Especifique fieldnames. writeheader() escreve os cabeçalhos das colunas.
import csv, io
buf = io.StringIO()
fields = ['name', 'age']
writer = csv.DictWriter(buf, fieldnames=fields)
writer.writeheader()
writer.writerow({'name': 'Alice', 'age': 30})
print(buf.getvalue())

writerows() para várias linhas

writer.writerows(list_of_rows) é mais eficiente do que chamar writerow() em um laço.
import csv, io
buf = io.StringIO()
writer = csv.DictWriter(buf, fieldnames=['x','y'])
writer.writeheader()
writer.writerows([{'x':1,'y':2},{'x':3,'y':4}])
print(buf.getvalue())

Delimitador personalizado

csv.writer(f, delimiter='\t') escreve valores separados por tabulações (TSV).
import csv, io
buf = io.StringIO()
writer = csv.writer(buf, delimiter='\t')
writer.writerow(['a', 'b', 'c'])
print(repr(buf.getvalue()))

Parâmetro extrasaction

DictWriter(f, fieldnames, extrasaction='ignore') ignora silenciosamente as chaves extras do dicionário, em vez de gerar ValueError.
import csv, io
buf = io.StringIO()
w = csv.DictWriter(buf, fieldnames=['name'], extrasaction='ignore')
w.writeheader()
w.writerow({'name': 'Alice', 'extra': 'ignored'})
print(buf.getvalue())

Escrevendo em um arquivo real

with open('out.csv','w',newline='',encoding='utf-8') as f: — use sempre newline='' e especifique a codificação.
import csv, tempfile, os
tmp = tempfile.mktemp(suffix='.csv')
with open(tmp, 'w', newline='') as f:
    csv.writer(f).writerows([[1,2],[3,4]])
print(open(tmp).read())
os.unlink(tmp)

Adicionando dados a um CSV

open(file, 'a') adiciona dados. Tenha cuidado para não escrever o cabeçalho novamente ao adicionar conteúdo.
import csv, io
buf = io.StringIO()
w = csv.writer(buf)
w.writerow(['x', 'y'])
print(buf.getvalue())

Escritas grandes em fluxo

Escreva uma linha por vez — não acumule todas as linhas na memória antes de escrever.
import csv, io
buf = io.StringIO()
writer = csv.writer(buf)
for i in range(5):
    writer.writerow([i, i**2])
print(buf.getvalue())

Teste de ida e volta

Escreva os dados em um CSV e depois leia-os novamente para verificar a correção.
import csv, io
original = [{'name':'Alice','age':'30'},{'name':'Bob','age':'25'}]
buf = io.StringIO()
w = csv.DictWriter(buf, fieldnames=['name','age'])
w.writeheader()
w.writerows(original)
buf.seek(0)
read_back = list(csv.DictReader(buf))
print(read_back == original)

Verificação rápida

Qual método de DictWriter escreve os nomes das colunas como a primeira linha?

Recapitulação

csv.writer: writerow/writerows. DictWriter: writeheader + writerow/writerows. Sempre abra com newline=''. Use extrasaction='ignore' para dicionários flexíveis.

Continue

Muito bem! Passe para a próxima lição.

Perguntas Frequentes

A aula “Escrita de CSV com csv.DictWriter” é grátis?

Sim — o texto completo de “Escrita de CSV com csv.DictWriter” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Python Academy, atualize para CoddyKit PRO. O curso de Python Academy inclui 4 aulas no total.

O que vou aprender em “Escrita de CSV com csv.DictWriter”?

Escreva dados estruturados em CSV usando DictReader e DictWriter. Você pratica Python Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Python Academy?

Nenhuma experiência prévia é necessária. Python Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Escrita de CSV com csv.DictWriter”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Python Academy?

Sim. Cada aula de Python Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Codificação e decodificação de JSON
  2. Tratamento de estruturas JSON aninhadas
  3. Leitura de CSV com csv.reader
  4. Escrita de CSV com csv.DictWriter
← Voltar para Python Academy