如何加载文件并创建无限保存文件?
How to load file and create infinite save files?
所以,我正在 python 创建一个小游戏来学习更多关于这门语言的知识,我有两个问题:
首先 - 有一种方法可以让玩家每次点击 'new game' 时,程序都会创建一个新的保存文件吗?
其次 - 如何加载保存的文件?它们是文本文件,我不知道如何加载它们。会保存的东西有数币、生命值、人物名字等等。并且玩家可以选择他想要加载的文件?
感谢关注
储蓄很容易。您有很多选择,但其中两个主要选择是:
1) pickle 模块
https://docs.python.org/2/library/pickle.html
基于 C 代码构建(默认情况下,在 Python3x 中),这是一种非常快速的序列化对象和恢复对象的方法。为文件使用唯一名称,并查看 "dump" 和 "load" 方法。
根据文档,这个示例应该可以帮助您入门:
# Save a dictionary into a pickle file.
import pickle
favorite_color = { "lion": "yellow", "kitty": "red" }
pickle.dump( favorite_color, open( "save.p", "wb" ) )
# Load the dictionary back from the pickle file.
favorite_color = pickle.load( open( "save.p", "rb" ) )
# favorite_color is now { "lion": "yellow", "kitty": "red" }
在 tkinter 中,这个(tkFileDialog)
http://tkinter.unpythonic.net/wiki/tkFileDialog
应该可以帮助您制作一个用于选择文件位置的对话框。这是一个很好的用法示例:
Opening File (Tkinter)
2) Load/save 并自己解析文件
你说你的游戏是为了学习目的,所以通过手动文件io来做事情是个不错的主意。该文档有一个很好的起点,使用 "open" 作为处理文件的主要功能。同样,"infinite" 文件只是意味着为每个文件使用唯一的名称
https://docs.python.org/2/tutorial/inputoutput.html
手动 io 的一个例子是
# writing data to a file
favorite_colors = {'tim':'yellow','mary':'blue'}
newsave_file = open(filename,'w')
for key, val in favorite_colors.items():
newsave_file.write(str(key)+'|'+str(val)+'\n')
newsave_file.close()
# reading data from a file
favorite_colors = {}
open_file = open(filename,'r')
for line in open_file:
pair = line.split('|')
favorite_colors[pair[0]] = pair[1]
open_file.close()
您可能想要使用 try/catch 块来确保程序不会崩溃,或者使用更复杂的解析器技术。一切由你决定!
所以,我正在 python 创建一个小游戏来学习更多关于这门语言的知识,我有两个问题:
首先 - 有一种方法可以让玩家每次点击 'new game' 时,程序都会创建一个新的保存文件吗?
其次 - 如何加载保存的文件?它们是文本文件,我不知道如何加载它们。会保存的东西有数币、生命值、人物名字等等。并且玩家可以选择他想要加载的文件?
感谢关注
储蓄很容易。您有很多选择,但其中两个主要选择是:
1) pickle 模块
https://docs.python.org/2/library/pickle.html
基于 C 代码构建(默认情况下,在 Python3x 中),这是一种非常快速的序列化对象和恢复对象的方法。为文件使用唯一名称,并查看 "dump" 和 "load" 方法。
根据文档,这个示例应该可以帮助您入门:
# Save a dictionary into a pickle file.
import pickle
favorite_color = { "lion": "yellow", "kitty": "red" }
pickle.dump( favorite_color, open( "save.p", "wb" ) )
# Load the dictionary back from the pickle file.
favorite_color = pickle.load( open( "save.p", "rb" ) )
# favorite_color is now { "lion": "yellow", "kitty": "red" }
在 tkinter 中,这个(tkFileDialog)
http://tkinter.unpythonic.net/wiki/tkFileDialog
应该可以帮助您制作一个用于选择文件位置的对话框。这是一个很好的用法示例:
Opening File (Tkinter)
2) Load/save 并自己解析文件
你说你的游戏是为了学习目的,所以通过手动文件io来做事情是个不错的主意。该文档有一个很好的起点,使用 "open" 作为处理文件的主要功能。同样,"infinite" 文件只是意味着为每个文件使用唯一的名称
https://docs.python.org/2/tutorial/inputoutput.html
手动 io 的一个例子是
# writing data to a file
favorite_colors = {'tim':'yellow','mary':'blue'}
newsave_file = open(filename,'w')
for key, val in favorite_colors.items():
newsave_file.write(str(key)+'|'+str(val)+'\n')
newsave_file.close()
# reading data from a file
favorite_colors = {}
open_file = open(filename,'r')
for line in open_file:
pair = line.split('|')
favorite_colors[pair[0]] = pair[1]
open_file.close()
您可能想要使用 try/catch 块来确保程序不会崩溃,或者使用更复杂的解析器技术。一切由你决定!