如何加载文件并创建无限保存文件?

Posted

技术标签:

【中文标题】如何加载文件并创建无限保存文件?【英文标题】:How to load file and create infinite save files? 【发布时间】:2015-03-15 22:43:27 【问题描述】:

所以,我正在用 python 创建一个小游戏来了解更多关于这种语言的信息,我有两个问题:

首先 - 有没有一种方法可以让玩家每次点击“新游戏”时,程序都会创建一个新的存档文件?

第二 - 我如何加载保存的文件?它们是文本文件,我不知道如何加载它们。将被保存的东西是数字硬币,健康,角色名称和其他东西。并且玩家可以选择要加载哪个文件?

感谢您的关注。

【问题讨论】:

您使用的是哪个 GUI? 您可以保存尽可能多的文件。你必须给每个人一个唯一的名字——你可以按顺序给它们编号。在 Python 中保存对象很容易,有关简单示例,请参阅 this answer。 【参考方案1】:

保存很容易。您有很多选择,但主要有两个:

1) 泡菜模块

https://docs.python.org/2/library/pickle.html

在 C 代码上构建(默认情况下,在 Python3x 中),这是序列化对象和恢复对象的一种非常快速的方法。为文件使用唯一名称,并查看“转储”和“加载”方法。

从文档中,这个示例应该可以帮助您入门:

# 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) 自己加载/保存和解析文件

您说您的游戏是用于学习目的,因此通过手动文件 io 来做事不是一个坏主意。文档有一个很好的起点,使用“open”作为处理文件的主要功能。同样,“无限”文件只是意味着为每个文件使用唯一的名称

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 块来确保程序不会崩溃,或者使用更复杂的解析器技术。这完全取决于你!

【讨论】:

以上是关于如何加载文件并创建无限保存文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何从同一资源运行两个函数(绘图图形并将无限数据保存到txt文件)

在泡菜文件中保存和加载多个对象?

如何将 tableview 行保存到文件并重新加载到 tableview

Wpf:从 zip 加载图像源而不保存文件

退出并加载我的应用程序时,如何将图像保存并读取到临时文件夹

如何将输入/选择值从网站保存到 XML/JSON 文件并使用 JavaScript 自动加载再次填充它们