An idea is to check if the file already existed (before opening it, since when opening with the option a
, it will be created). Then you only write the header if it did not exist:
nome_arquivo = 'Gerador.csv'
# verifica se o arquivo existe
# Python >= 3.4
from pathlib import Path
arquivo_ja_existia = Path(nome_arquivo).is_file()
# Ou, para Python < 3.4
import os.path
arquivo_ja_existia = os.path.isfile(nome_arquivo)
import csv
# Escrevendo o arquivo
with open(nome_arquivo, 'a', newline='', encoding='utf-8') as gravar:
fieldnames = ['Instituição', 'Senha']
escrever = csv.DictWriter(gravar, fieldnames=fieldnames)
if not arquivo_ja_existia: # só escreve o header se o arquivo não existia antes
escrever.writeheader()
nome = input('Instituição: ')
senha = input('Senha: ')
escrever.writerow({'Instituição': nome, 'Senha': senha})
To check if the file already exists, I put two options:
- for Python >= 3.4 can be used module
pathlib
- for versions prior to 3.4 can be used module
os.path
Next, you only write the header if the file did not exist.
Another option is to check the position of the file we are in. If the file is new, it will be at zero, and only in this case I write the header:
import csv
# Escrevendo o arquivo
with open(nome_arquivo, 'a', newline='', encoding='utf-8') as gravar:
fieldnames = ['Instituição', 'Senha']
escrever = csv.DictWriter(gravar, fieldnames=fieldnames)
if gravar.tell() == 0: # só escreve o header se estiver no início do arquivo
escrever.writeheader()
nome = input('Instituição: ')
senha = input('Senha: ')
escrever.writerow({'Instituição': nome, 'Senha': senha})
You run the line
escrever.writeheader()
every time you write to the file. If you want to write only once, you need to see to run that line only when you create the file.– Woss