cap*_*let 5 python scope namespaces numpy
我想将所有 npy/npz 文件加载到我的交互式 python shell 中,所以我不必去:
var1 = np.load('var1.npy')
Run Code Online (Sandbox Code Playgroud)
为每一个。我制作了这个脚本,但它不起作用,因为它的变量命名空间就在脚本中(假设缩进是正确的)。这样做的正确方法是什么?
def load_all():
import numpy as np
from os import listdir
from os.path import isfile, join
from os import getcwd
mypath = getcwd()
print 'loading all .npy and .npz files from ',mypath
files = [ f for f in listdir(mypath) if isfile(join(mypath,f)) ]
for f in files:
if f[-4:] in ('.npy','.npz'):
name = f[:-4]+'_'+f[-3:]
print 'loading', f, 'as', name
var = np.load(f)
exec(name + " = var")
Run Code Online (Sandbox Code Playgroud)
我会用glob
. 例如,glob.glob('*.np[yz]')
将返回当前目录中所有 .npy 和 .npz 文件名的列表。然后,您可以迭代该列表,依次加载每个文件名。您是否尝试将加载结果放入与文件名匹配的局部变量中?有比这更安全的设计 - 我会使用一个字典并使用名称作为键,例如:
numpy_vars = {}
for np_name in glob.glob('*.np[yz]'):
numpy_vars[np_name] = np.load(np_name)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8655 次 |
最近记录: |