Добавляются заголовки вместе с новыми данными
Я хочу добавить новые данные в csv файл, но вместе с новыми данными также передаются заголовки('first_name', 'last_name'...). А мне нужно сделать так, чтобы заголовки были в 1 строке и все, а дальше снизу просто данные под этими заголовками.
Код:
import csv
quoting = csv.QUOTE_ALL
def create_csv_file(filename):
try:
with open(filename, 'a+', newline='') as f:
writer = csv.DictWriter(
f,
fieldnames=['first_name', 'last_name', 'age', 'city'],
quoting=quoting
)
data1 = input('Имя: ')
data2 = input('Фамилия: ')
data3 = input('Возраст: ')
data4 = input('Место проживания: ')
writer.writeheader()
writer.writerow({
'first_name': data1,
'last_name': data2,
'age': data3,
'city': data4
})
except KeyboardInterrupt:
pass
create_csv_file('database.csv')
csv file:
"first_name","last_name","age","city"
"Ivan ","Ivanov","100","Mars"
"first_name","last_name","age","city"
"1","2","3","4"
Ответы (1 шт):
Автор решения: Johan
→ Ссылка
Можно сделать так:
import csv
import os.path
quoting = csv.QUOTE_ALL
def create_csv_file(data):
with open('database.csv', 'a+', newline='') as f:
writer = csv.DictWriter(f, fieldnames=data, quoting=quoting)
writer.writeheader()
user_input()
return
def user_input()
try:
create_csv_file([input('\nИмя: '), input('Фамилия: '), input('Возраст: '), input('Место проживания: ')])
except KeyboardInterrupt:
print('\nGood by!')
exit(0)
def main():
if not os.path.exists(os.path.join(os.getcwd(), 'database.csv')):
with open('database.csv', 'w', newline='') as f:
writer = csv.DictWriter(f, fieldnames=['first_name', 'last_name', 'age', 'city'], quoting=quoting)
writer.writeheader()
user_input()
if __name__ == "__main__":
main()