【发布时间】:2021-10-25 20:36:37
【问题描述】:
我有一个给定学生学期的课程列表。我想将此类列表保存到名为 classes.txt 的 txt 文件中。这充当一种“保存”文件。再次打开时,程序将读取文件并知道学生正在上课。
我使用以下代码:
def write_out():
f_out = open('classes.txt', 'w')
# classes is a list of classes that the student has created
# all the classes are objects which have a few parameters listed below
for course in classes:
f_out.write(str(Course.course_name(course)) + ',' + str(Course.credits(course)) + ',' + str() + ',' + str(Course.assignments(course)) + '\n')
写入文件的内容如下:
Bio,4,[('exam', 100)],[]
calc,4,[('exam', 50)],[]
Course 对象由几个参数定义:
- 名称(即“生物”)
- 学分数
- 课程评分类别的元组列表(类别名称,然后是权重)
- 作业清单*
*作业列表是作业对象的列表,由名称、类别和等级定义
我选择将类别保留为元组,因为它看起来更容易。
当我在程序启动时尝试读取文件时出现了我的问题。虽然将分配和类别写入列表相对简单,但读回它变得更加困难,因为当我将元组列表转换回例如类别时,似乎有双引号。
我的问题是:如何更轻松地将 txt 文件中的元组和列表读入我的程序中?
我从阅读此 post 开始,但我遇到了死胡同,因为这篇文章更多的是关于将元组专门保存到文件中,而我有很多参数需要在启动程序时转换为对象。
我想扩大这篇文章的范围,以便更多地了解保存文件,以便更好地了解我应该如何解决这个问题。
读取文件后,我根据保存文件中的参数创建一个新的 Course 对象,并将其添加到名为“课程”的列表中,以后可以访问。
旁注: 我什至不确定这种方法是否是最有效的做事方式,所以如果有人对如何更有效地将课程保存到文件有更好的想法,那么我会 100% 接受它。我计划将大量课程和作业写入此文件,因此正确写入很重要
感谢您的帮助,这是我在学习路径早期开始的一个项目,所以我只想重新审视它以了解如何将数据保存到文件中:p
【问题讨论】:
-
使用
pickle将整个列表保存到文件中。 -
您可能希望使用 Python
csvmodule 正确保存和读取文件。它会为您充分转义所有特殊字符。
标签: python python-3.x list tuples save