0
私は、データを辞書にロードする関数を持っています。 しかし、どのようにして関数内のグローバル()のに辞書をロードできますか?関数からPythonでグローバルにロードする方法
は、スクリプトの外側で簡単に行うことができるので、重要です。
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
この1つは動作しません(グローバルを...モジュール/関数に対してローカルである)
def load_inmemory(fpath):
globals().update(load237(fpath)[0])
いいですね、あなたはパイソンマスターです。 なぜこれらの名前をオブジェクトに格納し、グローバルに格納しないといけませんか? (これは、データをロードした後にスクリプトを実行するためのものです) – Brook