泡菜出错

Pickle Is Giving Errors

我正在尝试制作一款 RPG 风格的简单游戏。 我想使用 pickle 保存播放器位置,但我不知道如何创建 pickle 文件以及在何处创建它。这是一个带有即将出现的错误的示例代码:

def inp():
    calc=int(input())
import pickle
def saveload(opt):
    global calc
    if opt == "save":
        f = (filename, 'wb')
        pickle.dump(calc, f)
        f.close
        print( 'data saved')
    elif opt == "load":
        f = (filename, 'rb')
        calc = pickle.load(f)
    else:
        print( 'Invalid saveLoad option')

错误是:

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    saveload('save')
  File "C:/Abhay's Folder/shelve test.py", line 7, in saveload
    f = (filename, 'wb')
NameError: name 'filename' is not defined

这里有什么问题?任何帮助将不胜感激。 新节目:

import pickle
def inp():
    calc=int(input())
def saveload(filename, opt):
    global calc
    if opt == "save":
        with open(filename, 'wb') as f:
            pickle.dump(int(calc),f)
        print('data saved')
    elif opt == "load":
        with open(filename, 'rb') as f:
            calc = pickle.load(f)
    else:
        print('Invalid saveLoad option')

新错误:

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    saveload('/PythonPickle/windows','save')
  File "C:\Abhay's Folder\shelve test.py", line 8, in saveload
    pickle.dump(int(calc),f)
NameError: name 'calc' is not defined

所以出于某种原因,python 现在无法识别变量。

  • 您需要 filename 作为函数的参数。
  • 您应该使用open 创建文件指针。当您分配 f = (filename, 'wb').
  • 时,您正在创建一个元组
  • 确保声明了 calc 并且您在两个函数中都使用了它的 global 版本。
import pickle
calc = None
def inp():
    global calc
    calc=int(input())
def saveload(filename, opt):
    global calc
    if opt == "save":
        with open(filename, 'wb') as f:
            pickle.dump(calc, f)
        print('data saved')
    elif opt == "load":
        with open(filename, 'rb') as f:
            calc = pickle.load(f)
    else:
        print('Invalid saveLoad option')
saveload('/tmp/calc.pickle', 'save')