Como anexar uma nova linha ao CSV Python

Como anexar uma nova linha ao CSV Python
Neste artigo, vamos explorar os métodos para anexar dados recém -criados a um arquivo CSV existente. Os módulos CSV fornecem dois métodos para escrever o arquivo CSV, que são:
  1. Escritor
  2. Dictwriter

Vamos usar esses métodos de escrita de CSV para anexar nossos dados recém -criados a um arquivo CSV existente.

Método 1: Usando o método CSV Writer ()

Neste método, usaremos o método Writer () do CSV para anexar os dados recém -criados ao CSV.

Arquivo CSV: O arquivo CSV abaixo (teste.CSV) seremos usados ​​para anexar uma nova linha.

Mês, 1958.1959.1960
Jan, 340.360.417
Fev, 318.342.391
Mar, 362.406.419
Abr, 348.396.461
Jan, 340.360.417
Fev, 318.342.391

do escritor de importação do CSV

do escritor de importação do CSV
# Esta função que anexa novos dados de linha em um arquivo CSV existente
Def AppendNewrow (CSVFileName, ElementStoappend):
# Abra o arquivo CSV no modo Anexo
com open (csvfilename, 'a+', newline = ") como append_obj:
# criou um objeto de escritor do módulo do escritor
append_writer = writer (append_obj)
# O objeto de escritor criado que escreve nova linha para o CSV
Append_writer.Writertow (ElementStoappend)
# Lista de novos elementos que queremos anexar
newrow = ["DEC", 337, 405, 432]
# Chamando uma função que aceita dois parâmetros CSV File e novos dados de linha
AppendNewrow ('teste.CSV ', Newrow)

Saída:

Mês, 1958.1959.1960
Jan, 340.360.417
Fev, 318.342.391
Mar, 362.406.419
Abr, 348.396.461
Jan, 340.360.417
Fev, 318.342.391
Dez, 337.405.432

Linha 1: Nós importamos o módulo do escritor.

Linha 4 a 10: Criamos uma função chamada "AppendNewrow", que aceita dois parâmetros (o nome do arquivo CSV existente e os dados). Abrimos o arquivo CSV (arquivo CSV existente) com o Modo Apêndento ('A'), para que possamos adicionar nossos novos dados ao arquivo CSV. Para isso, criamos um objeto (Append_writer) do módulo do escritor. E na próxima linha, estamos chamando o Method Writertow do objeto Append_writer para anexar os dados ao CSV.

Linha 13 e 15: Criamos uma nova lista de dados que queremos anexar a um arquivo CSV existente. Na linha 15, estamos chamando a função de "AppendNewrow" e passando dois parâmetros (o nome do arquivo CSV existente e os dados).

Agora, vamos anexar dados onde alguns dados estão faltando.

No exemplo anterior, vimos que não há valor de coluna ausente nos dados recém -criados. Mas o que acontecerá se tivermos algum valor de coluna ausente? Portanto, mesmo se tivermos algum valor de coluna ausente, o módulo do escritor do CSV não tem método para verificar todos os valores de colunas estão presentes nos dados ou não.

# Lista de novos elementos que queremos anexar
newrow = ["DEC", 337, 432]
# Chamando uma função que aceita dois parâmetros CSV File e novos dados de linha
AppendNewrow ('teste.CSV ', Newrow)

Saída:

Mês, 1958.1959.1960
Jan, 340.360.417
Fev, 318.342.391
Mar, 362.406.419
Abr, 348.396.461
Jan, 340.360.417
Fev, 318.342.391
Dez, 337.405.432
Dez, 337.432

Criamos um novo conjunto de dados em que um valor da coluna está faltando. Então, quando executamos o programa de exemplo acima, ele fornece um resultado simples anexado, conforme mostrado na saída acima. Mas na própria saída, podemos ver que o valor 405 está faltando. Como resultado, o módulo de escritor CSV não tem um método para determinar qualquer valor de coluna ausente.

Portanto, se quisermos ajustar o valor adequado da coluna dos dados recém -criados, mesmo que houver alguns valores ausentes, devemos passar algum valor de string vazio junto com os dados, como abaixo:

newrow = ["DEC", 337 ", 432]

O caso acima não é grande coisa porque é apenas uma única fila de dados, mas quando temos bilhões de linhas, não podemos lidar com essas situações com o método de adição de string vazio. Porque então se tornará um trabalho muito tedioso.

Método 2: Usando o método DictWriter ()

Neste método, discutiremos o método dictWriter () para anexar os dados recém -criados ao CSV. O método dictwriter () também tem a instalação para descobrir qual valor da coluna está ausente porque é um método baseado em dicionário e, se algum valor-chave estiver vazio, manterá a sequência vazia automaticamente.

Arquivo CSV: Estamos usando o mesmo arquivo CSV (teste.CSV) como usamos nos exemplos anteriores.

# Esta função que anexa novos dados de linha em um arquivo CSV existente
Def AppendNewrow (CSVFileName, ElementStoappend):
# Abra o arquivo CSV no modo Anexo
com open (csvfilename, 'a+', newline = ") como append_obj:
# criou um objeto de escritor do módulo do escritor
Append_writer = DictWriter (Append_Obj,
FieldNames = ['mês', '1958', '1959', '1960']))
# O objeto de escritor criado que escreve nova linha para o CSV
Append_writer.Writertow (ElementStoappend)
# Lista de novos elementos que queremos anexar
newrow = "mês": "DEC", "1958": "337", "1959": "405", "1960": "432"
# Chamando uma função que aceita dois parâmetros CSV File e novos dados de linha
AppendNewrow ('teste.CSV ', Newrow)

Saída:

Mês, 1958.1959.1960
Jan, 340.360.417
Fev, 318.342.391
Mar, 362.406.419
Abr, 348.396.461
Jan, 340.360.417
Fev, 318.342.391
Dez, 337.405.432

Linha 1: Importamos o método Dictwriter.

Linha 4 a 12: Criamos uma função chamada "AppendNewrow", que aceita dois parâmetros (o nome do arquivo CSV existente e os dados). Abrimos o arquivo CSV (existente) com o Modo Apênd. Em seguida, passamos pelo cabeçalho do CSV na forma de uma lista para o dictwriter enquanto criava o próprio objeto. Temos que contar os nomes de colunas do CSV para o objeto antes de escrever para o CSV. Caso contrário, ele gerará um erro porque o objeto não poderá entender os nomes -chave do dicionário. E na próxima linha, estamos chamando o Method Writertow do objeto Append_writer para anexar os dados do dicionário ao CSV.

Linha 14 a 16: Criamos um novo dicionário de dados que queremos anexar a um arquivo CSV existente. Na linha 16, estamos chamando a função de "AppendNewrow" e passando dois parâmetros (o nome do arquivo CSV existente e os dados).

Agora, vamos anexar dados onde alguns dados estão faltando.

Como sabemos, o principal problema com o método do escritor é que não há método para detectar automaticamente que qualquer valor da coluna está faltando. Mas o método Dictwriter pode adivinhar isso automaticamente com a ajuda das teclas que faltam. Então, vamos explorar isso com um exemplo.

# Lista de novos elementos que queremos anexar
newrow = "mês": "DEC", "1958": "337", "1960": "432"
# Chamando uma função que aceita dois parâmetros CSV File e novos dados de linha
AppendNewrow ('teste.CSV ', Newrow)

Agora, vamos passar novos dados de dicto onde a chave ('1959') com seu valor está faltando. Então, vamos passar esses dados para o programa e ver o resultado.

Saída:

Mês, 1958.1959.1960
Jan, 340.360.417
Fev, 318.342.391
Mar, 362.406.419
Abr, 348.396.461
Jan, 340.360.417
Fev, 318.342.391
Dez, 337.405.432
Dez, 337 ,, 432

A saída acima mostra que no lugar do valor ausente, o método Dictwriter colocou uma sequência vazia.

Conclusão

Vimos dois métodos para escrever dados recém -criados para um arquivo CSV existente. O primeiro escritor de métodos é bom, mas apenas nesse caso, quando não temos valores de coluna ausentes. Porque, como já vimos, o método do Writer of CSV não é capaz de lidar com situações de valor ausente e inserirá um valor específico da coluna em algum outro valor da coluna. Então, esta é uma grande desvantagem do método do escritor. Mas essa situação é facilmente tratada pelo método Dictwriter por causa das chaves.