Как сохранить сеанс ipython, если я использовал magic %paste? (магический%save не работает)
Это кажется довольно простым вопросом, но мне не удалось правильно сохранить мой сеанс ipython с использованием волшебного "% save". Если я использую волшебную "% paste" в любое время в течение сеанса, сохранение сеанса приводит к следующим выводам:
get_ipython().magic(u'paste')
Конечно, я хотел бы сохранить вставленный код.
Есть идеи?
2 ответа
Как говорит Кдопен, если вы используете %save
сохраняет только те команды, которые вы вводите в командной строке
Если вы хотите записать ввод %paste
вы могли бы использовать %logstart
во время сеанса вы можете остановиться и начать регистрироваться с помощью: %logoff
/%logon
Вот больше информации о том, как использовать эту команду: logstart
Если вы хотите восстановить сеанс, не забудьте запустить ipython с: -i yourlogfile.py
опция командной строки. то есть: ipython3 -i ipython_log.py
Я могу воспроизвести это с версией 3.1.0 ipython на Ubuntu
$ ipython
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
Type "copyright", "credits" or "license" for more information.
IPython 3.1.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: paste
def f(x):
return 2**x
## -- End pasted text --
In [2]: f(4)
Out[2]: 16
In [3]: history
paste
f(4)
history
In [4]: save ptest.py 1-3
The following commands were written to file `ptest.py`:
get_ipython().magic(u'paste ')
f(4)
get_ipython().magic(u'history ')
In [5]: cat ptest.py
# coding: utf-8
get_ipython().magic(u'paste ')
f(4)
get_ipython().magic(u'history ')
In [6]:
Но помощь для %save
говорится, что
Эта функция использует тот же синтаксис, что и% history для входных диапазонов, затем сохраняет строки в указанное вами имя файла.
и это на самом деле то, что происходит. Это только сохранение команд, которые вы вводите в приглашении, и команда, которую вы ввели, была paste
, в которую магия превращается в get_ipython().magic(u'paste ')
,
Интересно, пытаясь edit
функция, которую я создал с paste
ставит меня в vi
уставившись на ту же магическую команду, а не на вставленную функцию.
Хотя первое поведение не может быть ошибкой (даже если оно не особенно полезно), такое поведение редактирования определенно похоже на одно.