Написание новых строк в csvFile

1

Я попытался создать код для записи новых зарегистрированных пользователей в файл 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")
Теги:
csv
writer

2 ответа

0

Вы открываете файл в режиме w (запись):

с open ('StudentUserName.csv', ' w ', newline = '\n') как csvUser:

Чтобы добавить новую строку (append), вам нужно открыть файл в режиме добавления 'a'. Так будет:

с open ('StudentUserName.csv', ' a ', newline = '\n') в качестве csvUser:

Возможно, вы хотите прочитать: https://docs.python.org/3.4/library/fileformats.html

0

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

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 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. Заголовок добавляется только в том случае, если файл пуст.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню