我有一个函数,可以将数据加载到字典中。 但是,如何将dictionary加载到函数中的Globals()。
函数内部的很重要,因为我们可以在脚本外部轻松地完成它。你知道吗
def load237(filename):
filename = osp.abspath(filename)
old_cwd = os.getcwdu()
os.chdir(osp.dirname(filename))
error_message = None
try:
tar = tarfile.open(filename, "r")
tar.extractall()
pickle_filename = osp.splitext(filename)[0]+'.pickle'
data = cPickle.load(file(pickle_filename))
saved_arrays = {}
if load_array is not None:
try:
saved_arrays = data.pop('__saved_arrays__')
for (name, index), fname in saved_arrays.iteritems():
arr = np.load( osp.join(osp.dirname(filename), fname) )
if index is None:
data[name] = arr
elif isinstance(data[name], dict):
data[name][index] = arr
else:
data[name].insert(index, arr)
except KeyError:
pass
for fname in [pickle_filename]+[fn for fn in saved_arrays.itervalues()]:
os.remove(fname)
except (EOFError, ValueError), error:
error_message = unicode(error)
os.chdir(old_cwd)
return data, error_message
这个不起作用(globals是模块/函数的本地…)
def load_inmemory(fpath):
globals().update(load237(fpath)[0])
实际上,应该将这些名称存储在全局变量中而不是作为全局变量存储的对象上。但是你问了怎么做,下面是怎么做的:
将Getting corresponding module from function与
for
循环和setattr
用作模块不支持字典操作,可以将函数编写为:我测试了以下内容:
打印
4
。在Python2.7.3中测试。你知道吗相关问题 更多 >
编程相关推荐