Вопрос: Можно ли импортировать файл MX, сохраненный с помощью DumpSave
, без оценки содержимого?Можно ли импортировать файл MX без оценки содержимого?
Позвольте мне проиллюстрировать:
Давайте создадим переменную, data
:
In[2]:= data = Range[10]
Out[2]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
Это может быть экспортирован в и импортируемых из MX без внесения каких-либо определений:
In[3]:= [email protected][data, "MX"]
Out[3]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
Но что, если мы используем DumpSave
?
In[4]:= DumpSave["data.mx", data]
Out[4]= {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}}
(И ясно data
)
In[5]:= Clear[data]
На реимпорта, ничего не возвращается:
In[6]:= Import["data.mx", {"MX", "HeldExpression"}]
Но переменная data
становится определяется опять же, как если бы мы использовали Get
.
In[7]:= data
Out[7]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
я ожидал бы получить что-то вроде Hold[data = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}]
, то есть что-то подобное тому, что было бы написано на .m
файла при использовании Save
.
Возможно, это технически невозможно избежать определения делается потому, что DumpSave
и Get
непосредственно управлять состоянием ядра вместо записи и чтение evaluatable определения как Save
делает? Это просто догадка.
(редактировать), пожалуйста, обратите внимание: Я не пытаюсь сохранить в пути, который может быть импортирован «Held». Я уже могу это сделать, используя Export
. Вместо этого я хочу импортировать файлы DumpSave
d MX.
Ответ Оказывается, что это невозможно сделать, если файл MX не был сохранен в специально позволить.
@Szabolcs Я добавил код, чтобы проиллюстрировать ответ. –