泡菜出错
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')
我正在尝试制作一款 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')