Estou tentando adicionar uma nova linha ao meu arquivo csv antigo. Basicamente, ele é atualizado sempre que executo o script Python.
No momento, estou armazenando os valores antigos das linhas csv em uma lista e excluindo o arquivo csv e criando-o novamente com o novo valor da lista.
Queria saber se existem maneiras melhores de fazer isso.
Prefiro esta solução usando o
csv
módulo da biblioteca padrão e awith
instrução para evitar deixar o arquivo aberto.O ponto principal está sendo usado
'a'
para anexar quando você abre o arquivo.Se você estiver usando o Python 2.7, poderá enfrentar novas linhas supérfluas no Windows. Você pode tentar evitá-los usando em
'ab'
vez'a'
disso, no entanto, causará TypeError: um objeto semelhante a bytes é necessário, não 'str' em python e CSV no Python 3.6. Adicionar onewline=''
, como sugere Natacha, causará uma incompatibilidade com versões anteriores entre o Python 2 e 3 .fonte
Com base na resposta da @GM e prestando atenção ao aviso do @John La Rooy, pude acrescentar uma nova linha abrindo o arquivo no
'a'
modo.Eu não tentei com o escritor regular (sem o Dict), mas acho que tudo ficará bem também.
fonte
Você está abrindo o arquivo com o modo 'a' em vez de 'w'?
Consulte Leitura e gravação de arquivos nos documentos python
fonte
Se o arquivo existir e contiver dados, é possível gerar o
fieldname
parâmetrocsv.DictWriter
automaticamente:fonte
fonte
Eu faço dessa maneira para acrescentar uma nova linha em um arquivo .csv:
fonte