Python使用多个文件从类创建对象

Python使用多个文件从类创建对象,python,file,object,Python,File,Object,我需要使用一个包含5个变量的“Student”类,并使用多个文件创建对象 文本文件:(Students.txt) 文本文件2:(CourseEnrollment.txt) 我需要读入文本文件,使用文件和“学生”类创建学生对象。 课程为: class Student (object): def __init__(self, first_name, middle_name, last_name, student_id, enrolled_courses): """Initia

我需要使用一个包含5个变量的“Student”类,并使用多个文件创建对象

文本文件:(Students.txt)

文本文件2:(CourseEnrollment.txt)

我需要读入文本文件,使用文件和“学生”类创建学生对象。 课程为:

class Student (object):
    def __init__(self, first_name, middle_name, last_name, student_id, enrolled_courses):
        """Initialization method"""
        self.first_name = first_name
        self.middle_name = middle_name
        self.last_name = last_name
        self.student_id = student_id
        self.enrolled_courses = enrolled_courses
在主要方法中,我有:

if __name__ == '__main__':
    list_of_students = []
    with open('Students.txt') as f:
        for line in f:
                data = line.split()
                if len(data) == 3:
                    first_name, last_name, student_id = data
                    list_of_students.append(Student(last_name, '', first_name, student_id))
                elif len(data) == 4:
                    list_of_students.append(Student(*data))
                else:
                    continue

当我在没有
注册课程
变量的情况下运行程序,并且只读取'Students.txt'时,它运行得非常完美,并创建了
学生
对象,其中包含
名字
中间名
姓氏
学生id
。但是,我仍然需要使用将
registered_courses
变量添加到对象中,并从'EnrolledCourses.txt'获取它。如何读入这两个文件并将变量分配给我试图创建的对象?

首先阅读学生/课程并创建一个字典:key=student,value=list of courses

这种格式很奇怪,但是下面的代码已经过测试并且可以正常工作(尽管可能没有它应该的那么健壮)。逐行阅读,课程先行,学生名单。添加到字典(如果键不存在,则创建空列表,nice
defaultdict
object会这样做):

在代码中,调用
Student
构造函数,如下所示:

list_of_students.append(Student(last_name, '', first_name, student_id, student_course[student_id]))
if __name__ == '__main__':
    list_of_students = []
    with open('Students.txt') as f:
        for line in f:
                data = line.split()
                if len(data) == 3:
                    first_name, last_name, student_id = data
                    list_of_students.append(Student(last_name, '', first_name, student_id))
                elif len(data) == 4:
                    list_of_students.append(Student(*data))
                else:
                    continue
from collections import defaultdict

student_course = defaultdict(list)
with open("CourseEnrollment.txt") as enr:
  while True:
    try:
        course_name = next(enr).strip()
        next(enr)  # skip dashes
        while True:
            student = next(enr).strip()
            if student=="":
                break
            student_course[student].append(course_name)
    except StopIteration:
        break
list_of_students.append(Student(last_name, '', first_name, student_id, student_course[student_id]))