我试图从文件中提取数据并在类中建立字典

时间:2019-07-27 17:03:07

标签: python class dictionary

首先,我不知道这是否可行,或者他没有正确的处理方法,因为我仍然是编程入门,但是我试图根据从.txt文件提取的数据在类中构建字典。但是教授要我们从文件中提取数据的方法是使用字节计数方法。这是他提出的问题的第一部分。我不会发布整个内容,因为我确定在一次驼峰之后我能弄清其余的一切。 输入数据 对于每个学生,将从文件中读取以下数据: 每行(记录)将具有 •学生证(5个字节) •学生姓名(30字节) •测试1(3个字节) •测试2(3个字节) •测试3(3个字节)

我尝试过在 init 中构建它,并且只是在正常功能下完成它。问题是,如果我确实将其构建在类中,则无法使其正常工作以拉到主函数

class Grades:

    count = 0
    avg = 0
    studentDict = {}


    def __init__(self, userId, name, test1, test2, test3):
        self.userId = userId
        self.name = name
        self.test1 = test1
        self.test2 = test2
        self.test3 = test3

        openFile = open('Students.txt', 'r')



        for lines in openFile:
            userId = lines[:5].strip(' ')

            name = lines[5:35].strip(' ')

            test1 = lines[35:38].strip(' ')

            test2 = lines[38:41].strip(' ')

            test3 = lines[41:].strip(' ')

        openFile.close


    def setUserId(self, userId):
        self.userId = userId

    def getUserId(self):
        return self.userId

    def setName(self, name):
        self.name = name

    def getName(self):
        return self.name

    def setTest1(self, test1):
        self.test1 = test1

    def getTest1(self):
        return self.test1

    def setTest2(self, test2):
        self.test2 = test2

    def getTest2(self):
        return self.test2

    def setTest3(self, test3):
        self.test3 = test3

    def getTest3(self):
        return self.test3

myGrades = Grades()

print(myGrades.getUserId())

这就是我所拥有的全部,因为我试图在继续前进之前获取它以打印一些结果,但是这就是给我这个错误代码, TypeError: init ()缺少5个必需的位置参数:“ userId”,“ name”,“ test1”,“ test2”和“ test3”

我希望它能在字典中打印出来

1 个答案:

答案 0 :(得分:0)

调用myGrades = Grades()时,您在类构造函数中缺少5个参数,因为您声明了以下内容:def __init__(self, userId, name, test1, test2, test3):
我认为您应该不带任何参数声明它,并在读取文件后影响类变量。它应该像这样:

def __init__(self):

    openFile = open('Students.txt', 'r')

    for lines in openFile:
        userId = lines[:5].strip(' ')

        name = lines[5:35].strip(' ')

        test1 = lines[35:38].strip(' ')

        test2 = lines[38:41].strip(' ')

        test3 = lines[41:].strip(' ')

    openFile.close()

    self.userId = userId
    self.name = name
    self.test1 = test1
    self.test2 = test2
    self.test3 = test3

还请注意,在调用close之后,您会缺少两个括号。