Python使用多个文件从类创建对象
我需要使用一个包含5个变量的“Student”类,并使用多个文件创建对象 文本文件:(Students.txt) 文本文件2:(CourseEnrollment.txt) 我需要读入文本文件,使用文件和“学生”类创建学生对象。 课程为: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
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
这种格式很奇怪,但是下面的代码已经过测试并且可以正常工作(尽管可能没有它应该的那么健壮)。逐行阅读,课程先行,学生名单。添加到字典(如果键不存在,则创建空列表,nicedefaultdict
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]))