Я хочу загружать объекты очень просто. Мне нравится load("OBJECT.Rdata")
в R. Я хочу использовать joblib в Python из-за широкого охвата и сжатия. Но я не могу загрузить глобальные объекты как эти собственные имена.
Есть ли способ загрузить объекты как эти имена с помощью joblib? (Я использую Windows ОС.)
# Making object files by joblib.
import joblib
obj1, obj2 = [1], [2]
with open('obj1.joblib', "wb") as jlf:
joblib.dump(obj1, jlf, compress=3)
with open('obj2.joblib', "wb") as jlf:
joblib.dump(obj2, jlf, compress=3)
del(obj1,obj2)
# This is OK. But this is too long and I have to write object names every time.
import joblib
from pathlib import Path
obj1, obj2 = [], [] # I have to write this every time.
args = ('./obj1.joblib', './obj2.joblib')
filelist = list(args)
for i in range(len(filelist)):
p_file = Path(filelist[i])
r = (
'with open("' + str(p_file) + '","rb") as jlf: '
+ p_file.stem + ' = joblib.load(jlf)'
)
rs = repr(r)[1:-1]
exec('global ' + p_file.stem)
exec(rs)
# I want to achieve above by simple function.
# This is NG. This does not load globally.
def load(*args):
import joblib
from pathlib import Path
filelist = list(args)
for i in range(len(filelist)):
p_file = Path(filelist[i])
r = (
'with open("' + str(p_file) + '","rb") as jlf: '
+ p_file.stem + ' = joblib.load(jlf)'
)
rs = repr(r)[1:-1]
exec('global ' + p_file.stem)
exec(rs)
load('./obj1.joblib', './obj2.joblib')