Как сохранить сеанс 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 уставившись на ту же магическую команду, а не на вставленную функцию.

Хотя первое поведение не может быть ошибкой (даже если оно не особенно полезно), такое поведение редактирования определенно похоже на одно.

Другие вопросы по тегам