Per il comando della storia, in particolare, la soluzione più semplice è
In [243]: history -t -f history.txt
In [244]: with open('history.txt') as f:
.....: HIST = [l.strip() for l in f]
.....:
In [245]: len(HIST)
Out[245]: 258
In [246]: HIST[-1]
Out[246]: "get_ipython().magic(u'history -t -f history.txt')"
In [247]:
In sostanza, il dump in un file e leggere nuovamente.
Questo può sembrare un kludge, ma ho il sospetto che provenga dalla natura di IPython. In realtà non è un interprete, ma è invece una shell della riga di comando per l'interprete sottostante. Il mio sospetto è che i comandi magici siano gestiti all'interno di IPython e non passino attraverso il normale percorso di trasmissione del comando all'interprete, catturando l'output e memorizzandolo nella cronologia dei comandi come Out [n]. Quindi non è disponibile per il richiamo e l'assegnazione.
L'alternativa è che get_ipython().magic
restituisce semplicemente None
.
In entrambi i casi, l'uscita schermo d = per %history
non è disponibile. Devi scaricarlo su un file.
Sembra variare per comando magico. alias
, ad esempio, restituisce l'output dello schermo
In [288]: a=%alias
Total number of aliases: 17
In [289]: a
Out[289]:
[('cat', 'cat'),
('clear', 'clear'),
('cp', 'cp'),
('ldir', 'ls -F -G -l %l | grep /$'),
('less', 'less'),
('lf', 'ls -F -l -G %l | grep ^-'),
('lk', 'ls -F -l -G %l | grep ^l'),
('ll', 'ls -F -l -G'),
('ls', 'ls -F -G'),
('lx', 'ls -F -l -G %l | grep ^-..x'),
('man', 'man'),
('mkdir', 'mkdir'),
('more', 'more'),
('mv', 'mv'),
('rm', 'rm'),
('rmdir', 'rmdir'),
(u'show', u'echo')]
In [290]:
? Storia ti indica dove è definito. import IPython.core.magics.history.HistoryMagics ti consente di chiamarlo. xxx = IPython.core.magics.history.HistoryMagics() e xxx.history() danno un errore. Quindi sono rimasto bloccato. –