Oi, Cauã.
1. Na escrita: Definindo uma estrutura
Quando você utiliza o método escritor.writerow(), o Python espera receber um objeto que ele possa percorrer para identificar cada coluna.
Ao colocar ['nome', 'idade'], você está criando uma lista.
- O
csv.writer entende que cada item dentro dessa lista representa uma coluna diferente. - Sem os colchetes, o Python poderia se confundir sobre onde termina um dado e começa outro.
2. Na leitura: Representação do Python
No trecho onde você faz a leitura:
for linha in leitor:
print(linha)
O resultado no console aparece como ['nome', 'idade'] porque o csv.reader transforma cada linha do seu arquivo .csv em uma lista de strings.
Os colchetes na saída do print servem para indicar que aquele dado não é apenas um texto solto, mas sim uma estrutura organizada onde você pode acessar elementos específicos (como linha[0] para pegar apenas o nome).
Por que aparecem linhas vazias []?
Notei que no seu exemplo de saída aparecem alguns [] entre os dados. Isso acontece geralmente por causa do parâmetro newline.
Ao abrir um arquivo para escrever ('w'), é recomendado usar o parâmetro newline=''. Se ele for omitido em alguns sistemas operacionais (como o Windows), o Python pode adicionar uma quebra de linha extra a cada gravação, gerando essas linhas vazias que você vê ao ler o arquivo depois.
Exemplo ajustado para evitar linhas vazias:
import csv
# Adicionando o newline='' também na escrita
with open('dados.csv', 'w', newline='') as f:
escritor = csv.writer(f)
escritor.writerow(['nome', 'idade'])
escritor.writerow(['Ana', '32'])
Os colchetes são seus aliados para garantir que o Python saiba exatamente o que é uma coluna e o que é uma linha inteira.
Ficou mais claro agora o motivo de eles aparecerem no seu código?
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!