我有一个设计问题。我正在使用python(2.7)进行练习,这是一个带迷宫的简单游戏。我需要在游戏的每一步都读取特定文件的写入。
目前我有2个班级(游戏和迷宫)。 Labyrinth类负责读取和写入文件。
我的问题是,可以在Labyrinth的 init 函数中打开文件,并在游戏结束时在另一个函数(可以从另一个类调用)中关闭它吗?或者每次打开和关闭文件更好?
我没有将文件内容保存到readlines()
的字符串中的原因是因为我应该在游戏的每一步保存到文件中。
答案 0 :(得分:2)
虽然您可以这样做,但通常建议您使用with
打开文件,因为无论发生什么情况,都会通过关闭文件来处理错误。您只需传递参考文件,即可将其传递给迷宫init
。
with open(file) as f:
labyrinth = Labyrinth(f)
然后,如果发生任何错误,文件仍然安全关闭,您还可以将打开的文件传递给Labyrinth对象。
答案 1 :(得分:1)
您正处于设计阶段。 因此,您必须权衡由于某些错误导致数据丢失的可能性,或者与数据的重要性以及“保护数据”的成本相关的损失。它
使用with
可以保护您免受某些错误的影响。如果你认为python本身可能崩溃(例如),那么你仍然有一些风险。每一步后保存显然更安全。它的用途有多大取决于保存数据的数量(还有减少这种技术的技术),每次保存对性能的影响以及这种崩溃的可能性。
没有任何进一步的信息,只是猜测,我对你的具体问题的答案:
...可以在
init
的{{1}}函数中打开文件 在比赛结束时关闭它......?或者打开和关闭更好 每次都有文件?
是我会在每一步后保存。