Запись новых строк в csvFile

Я попытался создать код для записи новых зарегистрированных пользователей в файл csv. Он заменял существующего пользователя в файле. Теперь он не вводит никаких данных. Я не уверен, где я ошибся.

Это код:

FirstName = input("Enter your  first name: ")
Surname = input("Enter your surname: ")
Age = input("Enter your age: ")
YearGroup = input("Enter your year group: ")
userName = input("Create a unique username: ")
passWord = input("Create a password: ")
fieldnames =['Username', 'Surname', 'First Name', 'Age', 'YearGroup', 'passWord']
reG = [{'Username': userName, 'Surname': Surname, 'First Name': FirstName,
                    'Age': Age, 'YearGroup': YearGroup, 'passWord': passWord}]
with open('StudentUserName.csv', 'w', newline='\n') as csvUser:
    reG = [{'Username': userName, 'Surname': Surname, 'First Name': FirstName,
                    'Age': Age, 'YearGroup': YearGroup, 'passWord': passWord}]
    writer = csv.DictWriter(csvUser, fieldnames)
    #writer.seek(0,2)
    writer.writeheader()
    writer.writerow(reG)

    #writer.writerow("\r")
    #writer.writerow({userName, Surname, FirstName,
    #                 Age, YearGroup, passWord})
csvUser.close()
print ("Registration completed")

person digital_traveller    schedule 19.06.2018    source источник
comment
Не будет работать как надо: reG = {'Username': userName, 'Surname': Surname, First Name': FirstName, 'Age': Age, 'YearGroup': YearGroup, 'passWord': passWord}   -  person FelixEnescu    schedule 19.06.2018


Ответы (1)


Вот несколько настроек, чтобы ваша программа работала должным образом:

import csv
import os

FirstName = input("Enter your  first name: ")
Surname = input("Enter your surname: ")
Age = input("Enter your age: ")
YearGroup = input("Enter your year group: ")
userName = input("Create a unique username: ")
passWord = input("Create a password: ")

fieldnames = ['Username', 'Surname', 'First Name', 'Age', 'YearGroup', 'passWord']

filename = 'StudentUserName.csv'

# The file is now opened in append mode instead of write mode.
with open(filename, 'a', newline='\n') as csvUser:

    # reG is now a dictionary, as required by writerow.
    reG = {'Username': userName, 'Surname': Surname, 'First Name': FirstName,
           'Age': Age, 'YearGroup': YearGroup, 'passWord': passWord}

    writer = csv.DictWriter(csvUser, fieldnames=fieldnames)

    # if it's an empty file, write the header
    if os.stat(filename).st_size == 0:
        writer.writeheader()

    writer.writerow(reG)

    # writer.writerow("\r")
    # writer.writerow({userName, Surname, FirstName,
    #                 Age, YearGroup, passWord})
csvUser.close()
print ("Registration completed")
  1. Теперь файл открывается в режиме добавления вместо режима записи.
  2. reG теперь является словарем, как того требует writerow.
  3. Заголовок добавляется только в том случае, если файл пуст.
person Ashish Acharya    schedule 19.06.2018