CSV Reader только читает последнюю строку в python3 - PullRequest
0 голосов
/ 06 февраля 2019

Я настраиваю программу, которая считывает данные из файла CSV, пропускает эти данные через цепочку сравнений, а затем сообщает пользователю, проходят ли эти данные эти тесты.Но я продолжаю получать проблему, когда он читает только последнюю строку файла

Это мой CSV-файл:

1,Gregg,1,True,900,1800
2,Scott,2,False,0,200
3,Trish,3,True,900,1800
4,Rob,4,False,0,200
5,Mat,5,True,900,1800
6,Ben,6,False,0,200
7,Mason,7,True,900,1800
8,Ciaran,8,False,0,200
9,Aaron,9,True,900,1800
10,Dylan,10,False,0,200
11,Allistair,1,True,900,1800
12,Owen,2,False,0,200
13,Mateja,3,True,900,1800
14,Tom,4,False,0,200
15,David,5,True,900,1800
16,Aaron,6,False,0,200
17,Bjork,7,True,900,1800
18,Snorri,8,False,0,200
19,James,9,True,900,1800
20,Madison,5,False,0,200

Это моя структура записи (хранится в record.py):

class User:
    # Create a record structure for the user, which will encompass and ID, name, level, presence indicator, opentime and closetime
    def __init__(self, usrID, name, lvl, present, opentime, closetime):
        self.usrID = usrID
        self.name = name
        self.lvl = int(lvl)
        self.present = bool(present)
        self.opentime = opentime
        self.closetime = closetime

# return a string of text when the User class is called
    def __repr__(self):
        if self.present == True:
            return "User with ID " + self.usrID + ", with name " + self.name + " has level " + str(self.lvl) + " and is present in the building"
        else:
            return "User with ID " + self.usrID + ", with name " + self.name + " has level " + str(self.lvl) + " and isn't present in the building"

И это мой код:

def readusrs():

    # define f to open testaccounts.csv
    f = open('csv/users.csv')

    # open testaccounts.csv in csvreader mode
    csvFile = csv.reader(f)

    # reset out counter
    i = 0

    # for every row in the csv file, populate our arrays
    for row in csvFile:
        usrs[i].usrID = row[0]
        usrs[i].name = row[1]
        usrs[i].plvl = (row[2])
        usrs[i].present = bool(row[3])
        usrs[i].oentime = row[4]
        usrs[i].closetime = row[5]

        # incrament i
        i = i + 1

    # return all of the account data
    return usrs

usrs = [record.User("", "", 0, True, "", "")] * 20

usrs = readusrs()

Я ожидал, что данные в программе получатся как в CSV-файле, но вместо этого все будет выглядеть так:

Пользователь с ID 20, с именем Madison, имеет уровень 0 и присутствует в здании

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...