保存文件功能

时间:2015-04-22 18:26:14

标签: python python-3.x file-io pickle shelve

因此,对于我的介绍编程类,我们必须创建一个具有保存/加载功能的游戏,并且我试图测试一些代码以确保它有效。

由于某种原因,我无法使以下功能正常工作。我已尝试在空闲状态下逐行检查它并且它在那里工作得很好但是一旦我尝试在一个函数中使用相同的系统它就行不通。请帮忙吗?

def save(name,inventory,mapGrid,x,y,enemy):`

    choice = 0

    file = shelve.open("save_files")       
    save = {'save1':file['save1'],'save2':file['save2'],'save3':file['save3']}

    print("Where would you like to save?")
    print("Save 1 -", save['save1']['name'])
    print("Save 2 -", save['save2']['name'])
    print("Save 3 -", save['save3']['name'])
    choice = input("Enter Number:\t")

    if choice == 1:
        save['save1']['name'] = name
        save['save1']['inventory'] = inventory
        save['save1']['mapGrid'] = mapGrid
        save['save1']['x'] = x
        save['save1']['y'] = y
        save['save1']['enemy'] = enemy
        file['save1'] = save['save1']
        file.sync()
    if choice == 2:
        save['save2']['name'] = name
        save['save2']['inventory'] = inventory
        save['save2']['mapGrid'] = mapGrid
        save['save2']['x'] = x
        save['save2']['y'] = y
        save['save2']['enemy'] = enemy
        file['save2'] = save['save2']
        file.sync()
    if choice == 3:
        save['save3']['name'] = name
        save['save3']['inventory'] = inventory
        save['save3']['mapGrid'] = mapGrid
        save['save3']['x'] = x
        save['save3']['y'] = y
        save['save3']['enemy'] = enemy
        file['save3'] = save['save3']
        file.sync()

    file.close()

    print("Game Saved")
编辑:运行该功能后,应将字典保存到文件['保存#']并允许我稍后访问数据,但数据不会保存到货架上文件,当我再次尝试访问它时,那里什么也没有。 ((对不起应该把它放在正确的位置))

例如,如果我再次运行save()函数,它应该显示与保存文件关联的名称,但它只显示' EMPTY'。

我将save_files设置为的基本内容是

文件['保存#'] = {'名称':' EMPTY'}

1 个答案:

答案 0 :(得分:0)

由于您的if语句正在比较int,因此请确保choice也是一个整数。 choice实际上是一个字符串是可能的,在这种情况下,没有一个比较是真的。基本上是:

choice = int(input("Enter Number:\t"))

或者您可以将所有比较更改为字符串,但重要的是确保比较中的类型一致性