Python 2 - TypeError: int() 参数必须是字符串、类似字节的对象或数字,而不是“列表”
Posted
技术标签:
【中文标题】Python 2 - TypeError: int() 参数必须是字符串、类似字节的对象或数字,而不是“列表”【英文标题】:Python 2 - TypeError: int() argument must be a string, a bytes-like object or a number, not 'list' 【发布时间】:2017-02-02 02:23:36 【问题描述】:如何解决此错误?当我尝试用泡菜加载我的保存时,它给了我这个
Traceback (most recent call last):
File "C:\Users\user\Downloads\game.py", line 315, in <module>
menu()
File "C:\Users\user\Downloads\game.py", line 261, in menu
if (0) > int(hunger) or (0) > int(thirst):
TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'
这就是我加载/保存的方式
with open('objs.pickle', "rb") as f:
money = pickle.load(f)
hunger = pickle.load(f)
thirst = pickle.load(f)
energy = pickle.load(f)
wanted = pickle.load(f)
gun = pickle.load(f)
with open('objs.pickle', 'ab') as f:
pickle.dump([money, hunger, thirst, energy, gun, wanted], f)
【问题讨论】:
总是将 FULL 错误信息放在 QUESTION 中。还有其他有用的信息。 我在那里编辑过 使用print(hunger, thirst)
看看你在这个变量中有什么。
[1000.0] [1000.0, 10, 10, 10, 0, 0]
data = pickle.load(f)
, hunger = data[1]
, thirst = data[2]
【参考方案1】:
首先使用'wb'
而不是'ab'
只有最后一个值
以后你可以使用
with open('objs.pickle', "rb") as f:
money = pickle.load(f)
hunger = pickle.load(f)
thirst = pickle.load(f)
energy = pickle.load(f)
gun = pickle.load(f)
wanted = pickle.load(f)
with open('objs.pickle', 'wb') as f:
pickle.dump(money, f)
pickle.dump(hunger, f)
pickle.dump(thirst, f)
pickle.dump(energy, f)
pickle.dump(gun, f)
pickle.dump(wanted, f)
或
with open('objs.pickle', "rb") as f:
money, hunger, thirst, energy, gun, wanted = pickle.load(f)
with open('objs.pickle', 'wb') as f:
pickle.dump([money, hunger, thirst, energy, gun, wanted], f)
【讨论】:
以上是关于Python 2 - TypeError: int() 参数必须是字符串、类似字节的对象或数字,而不是“列表”的主要内容,如果未能解决你的问题,请参考以下文章
Python 2 - TypeError: int() 参数必须是字符串、类似字节的对象或数字,而不是“列表”
TypeError:'int'对象不支持项目分配Python
Python - TypeError:'int'对象不可迭代
TypeError:'int'对象不可迭代,使用 Python 3 [关闭]