Domanda: È possibile importare un file MX salvato utilizzando DumpSave
senza valutare il contenuto?È possibile importare un file MX senza valutare il contenuto?
Permettetemi di illustrare:
Creiamo una variabile, data
:
In[2]:= data = Range[10]
Out[2]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
Si può essere esportato e importato dalla MX senza apportare alcuna definizioni:
In[3]:= [email protected][data, "MX"]
Out[3]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
Ma cosa succede se usiamo DumpSave
?
In[4]:= DumpSave["data.mx", data]
Out[4]= {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}}
(E chiaro data
)
In[5]:= Clear[data]
Sulla reimportazione, nulla viene restituito:
In[6]:= Import["data.mx", {"MX", "HeldExpression"}]
Ma la variabile data
diventa definito ancora una volta, come se avessimo usato Get
.
In[7]:= data
Out[7]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
mi sarei aspettato di ottenere qualcosa di simile Hold[data = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}]
, vale a dire qualcosa di simile a quello che sarebbe stato scritto in un file .m
quando si utilizza Save
.
Forse è tecnicamente impossibile evitare la definizione di essere fatta perché DumpSave
e Get
manipolare direttamente lo stato del kernel, invece di scrittura e lettura di una definizione di valutabili come Save
fa? Questa è solo una supposizione.
(edit) NOTA BENE: non sto cercando di salvare in un modo che può essere importato "tenuto". Posso già farlo usando Export
. Sto cercando di importare in precedenza i file MX DumpSave
d.
risposta Sembra sia impossibile farlo a meno che il file MX è stato salvato per consentire specificamente essa.
@Szabolcs ho aggiunto un po 'di codice per illustrare la risposta. –