如何修复numpy python文件加载/写入中的逻辑错误

如何修复numpy python文件加载/写入中的逻辑错误,python,numpy,Python,Numpy,我最近开始创建一个角色扮演,基于控制台的游戏 我制定了以下代码: #主游戏循环 尽管如此: 如果MMS=='A':#已定义 打印('正在加载故事模式…') 打印(“[加载]导入numpy”) 尝试: 将numpy作为np导入 除恐怖外: 打印('Error 01//Cilent side') 打印(‘导入错误’) 尽管如此: A=1 打印(“[LOADING]正在尝试加载保存…”) 尝试: SAVE=np.loadtxt('Savedata.dat') MAXLIFE=SAVE[:,0]#所有这

我最近开始创建一个角色扮演,基于控制台的游戏

我制定了以下代码:

#主游戏循环
尽管如此:
如果MMS=='A':#已定义
打印('正在加载故事模式…')
打印(“[加载]导入numpy”)
尝试:
将numpy作为np导入
除恐怖外:
打印('Error 01//Cilent side')
打印(‘导入错误’)
尽管如此:
A=1
打印(“[LOADING]正在尝试加载保存…”)
尝试:
SAVE=np.loadtxt('Savedata.dat')
MAXLIFE=SAVE[:,0]#所有这些都已定义
生命=拯救[:,1]
MAXEN=SAVE[:,2]
EN=保存[:,3]
MAXOX=SAVE[:,4]
OX=保存[:,5]
OPOS=SAVE[:,6]
POS=保存[:,7]
章节=保存[:,8]
SAVE.close()
除:
睡眠(4)
打印(“[加载]未找到保存文件或保存不正确。”)
打印(“[加载]创建新保存”。)
MAXLIFE=150
寿命=110
最大值=150
EN=150
MAXOX=150
牛=85
OPOS=10
位置=10
第1章
np.savetxt('Savedata.dat',[MAXLIFE,LIFE,MAXEN,EN,MAXOX,OX,OPOS,POS,CHAPTER])
我只知道,如果没有保存,它将使用默认值创建一个新的保存。如果有保存,游戏将加载它。 但是,它使这个无限的输出:

[LOADING] No save file found or incorrect save.
[LOADING] Creating a new save.
Loading Story mode...
[LOADING] Importing numpy
[LOADING] Trying load save...
[LOADING] No save file found or incorrect save.
[LOADING] Creating a new save.
Loading Story mode...
...
无限循环是正常的,但它没有检测到它之前的保存

这在Savedata.dat中

1.000000000000000000e+00
1.000000000000000000e+00
1.000000000000000000e+00
1.000000000000000000e+00
1.000000000000000000e+00
1.000000000000000000e+00
1.000000000000000000e+00
1.000000000000000000e+00
1.000000000000000000e+00
我做错了什么?
谢谢

正如hpaulj所说,除了,不要使用裸
。我把它改写为:

except Exception as e:
    print(e)
(我知道,只捕获异常也很糟糕)它向我打印了以下内容:

Traceback (most recent call last):
  File "wakagame.py", line 21, in <module>
    MAXLIFE = SAVE[:, 0]  # all of thesse already definied
IndexError: too many indices for array
回溯(最近一次呼叫最后一次):
文件“wakagame.py”,第21行,在
MAXLIFE=SAVE[:,0]#所有这些都已定义
索引器:数组的索引太多
问题是您正在尝试拾取列:

MAXLIFE=SAVE[:,0]

不是来自矩阵,而是来自平均1D阵列:

np.savetxt('Savedata.dat',[MAXLIFE,LIFE,MAXEN,EN,MAXOX,OX,OPOS,POS,CHAPTER])

应将所有这些行替换为以下行:

MAXLIFE=SAVE[0]


(还要注意,SAVE是一个numpy数组,而不是一个文件,因此
SAVE.close()
将返回一个错误。您应该删除这一行)

除了
之外,不要使用裸露的
。使用您期望的特定类型的错误(例如
io错误
),否则
except
会掩盖所有类型的错误,甚至是意外错误