Python 如何保存名称(作为字符串)已给定的变量列表?

Python 如何保存名称(作为字符串)已给定的变量列表?,python,numpy,Python,Numpy,所以我有一堆numpy数组,它们的名称(作为字符串)在一个列表中: mylist=['arr1','arr2',…] 我想用np保存它们。保存,所有的。我尝试的是: for avar in mylist: np.save(avar+'.npy', exec(avar)) 有效吗?IDK,至少没有错误,但稍后加载时,它会抛出以下错误: ValueError:当allow_pickle=False时无法加载对象数组 如果您能告诉我以后如何将它们加载到相同的变量名,那就太好了。我想我知道了

所以我有一堆numpy数组,它们的名称(作为字符串)在一个列表中:

mylist=['arr1','arr2',…]

我想用np保存它们。保存,所有的。我尝试的是:

for avar in mylist:
    np.save(avar+'.npy', exec(avar))
有效吗?IDK,至少没有错误,但稍后加载时,它会抛出以下错误:

ValueError:当allow_pickle=False时无法加载对象数组

如果您能告诉我以后如何将它们加载到相同的变量名,那就太好了。

我想我知道了

for astring in mylist:
    exec('tmp = ' + astring )
    np.save(astring + '.npy', tmp)
恢复时:

for astring in mylist:
    tmp = np.load(astring + '.npy')
    exec(astring ' =  tmp' )

如果所有变量都是局部变量,则可以

vars = locals()
for astring in mylist:
    np.save(astring + '.npy', vars[astring])
如果你也有一些全局变量,那么就这样做

vars = globals()

@Alex,如果变量名来自网络或外部文件,则使用
exec
会有执行任意代码的风险

我讨厌这个命令。它返回堆积如山的垃圾和我从未创建过的内置变量,甚至返回模块。您必须对它们进行筛选,以提取“用户创建的”变量。无论如何,为他们创建字典是个好主意,就像本地人返回的一样()。谢谢,你是怎么做的?每个都有一个单独的名字?如果您有一个名称列表,那么您不也有一个数组列表吗?但是您是否尝试过使用
allow\u pickle=True
加载
?结果如何?另一个要检查的是
exec('arr1')
。这真的是您期望的数组吗?我解决了问题,如答案部分所示。是的,你是对的,我确实有数组本身,但我恰好能够轻松地将它们的名称作为字符串构建一个列表,我想将它们保存在一行中。