Недавно я перешел на использование записных книжек IPython как часть своего рабочего процесса. Однако мне не удалось найти способ импортировать файлы .py в отдельные ячейки открытой записной книжки IPython, чтобы их можно было редактировать, запускать и затем сохранять. Можно ли это сделать?
Я нашел это в документации, которая сообщает мне, как импортировать файлы .py в качестве новых записных книжек, но это не соответствует тому, чего я хочу достичь.
Любые предложения будут высоко ценится.
Хороший вопрос. Мне еще предстоит увидеть действительно удовлетворительный ответ. Это особенно важно при обслуживании ноутбука IPython через Интернет. Если люди хотят видеть / редактировать исходный код импортируемых функций (с подсветкой синтаксиса и т. Д.), В настоящее время нет простого способа сделать это. Должна быть возможность просто открывать файлы py, не преобразовывая их в файлы ipynb. — person aaronsstack schedule 05.03.2015
Текстовый файл можно загрузить в ячейку записной книжки с помощью волшебной команды
%load
.Если вы выполните ячейку, содержащую:
содержимое
filename.py
будет загружено в следующую ячейку. Вы можете редактировать и выполнять его как обычно.Чтобы сохранить содержимое ячейки обратно в файл, добавьте волшебную ячейку
%%writefile filename.py
в начало ячейки и запустите ее. Помните, что если файл с таким именем уже существует, он будет автоматически перезаписан.Чтобы увидеть справку по любой волшебной команде, добавьте
?
: например,%load?
или%%writefile?
.Для получения общей справки по магическим функциям введите «% magic» Для получения списка доступных магических функций используйте% lsmagic. Для описания любого из них введите% magic_name?, Например ‘%CD?’.
См. также: Магические функции из официального Документы IPython.
Это плюс
%save -f
, кажется, способ сделать то, что я искал. Спасибо! — person aaronsstack; 10.01.2014save -f
— это своего рода косвенный способ сохранения в файл, который будет работать только в том случае, если вы сначала выполните ячейку, а затем предоставите правильную ссылку. В общем, проще использовать%%writefile
, который записывает текущую ячейку в файл. Я обновил ответ, чтобы упомянуть об этом. — person aaronsstack; 29.07.2014Новая магическая команда сейчас
%loadpy
(вместо%load
). — person aaronsstack; 10.06.2016согласно ipython.org/ipython-doc/3/interactive/magics.html использование
%load
в порядке, в дальнейшем:%loadpy
(Псевдоним%load
) —%loadpy
получил некоторую гибкость и отказался от необходимости расширения.py
. Поэтому его просто переименовали в%load
. Дополнительную информацию можно найти в%load
docstring. — person aaronsstack; 27.05.2017Можно ли запустить
%load myfile.py
в качестве параметра запуска дляipython
? — person aaronsstack; 31.07.2020Перетащите файл Python в «домашнюю» таблицу записных книжек Ipython, нажмите кнопку «Загрузить». Это создаст новую записную книжку только с одной ячейкой, содержащей содержимое вашего файла .py.
Или скопируйте / вставьте из вашего любимого редактора;)
Спасибо за ответ, но, как я уже упоминал в тексте сообщения, я стараюсь не создавать каждый раз новую записную книжку, но поддерживать сценарий .py из ячейки существующей записной книжки. — person aaronsstack; 10.01.2014
Исправьте меня, если я ошибаюсь: вы не хотите использовать блокнот в качестве текстового редактора? (Я имею в виду: каждая модификация в ячейке не изменяет файл .py). Кстати, я понятия не имею о собственном способе вставки содержимого .py в ячейку, я всегда копирую / вставляю свой код, когда это необходимо … извините — person aaronsstack; 10.01.2014
Я счел удовлетворительным использовать ls и cd в ipython notebook для поиска файла. Затем введите cat your_file_name в ячейку, и вы получите обратно содержимое файла, которое затем можно вставить в ячейку как код.
Написать / сохранить
%%writefile myfile.py
-a
). Другой псевдоним:%%file myfile.py
Бежать
%run myfile.py
Загрузить / импортировать
%load myfile.py
Для большей магии и помощи
%lsmagic
%COMMAND-NAME?
%run?
Примечание
Помимо магических команд ячейки, блокнот IPython (теперь блокнот Jupyter) настолько крут, что позволяет использовать любую команду unix прямо из ячейки (это также эквивалентно использованию волшебной команды
%%bash
cell).Чтобы запустить команду unix из ячейки, просто поставьте перед командой знак
!
. Например:!python --version
посмотреть свою версию Python!python myfile.py
запустите myfile.py и выведите результаты в текущей ячейке, как и%run
(см. Разницу между!python
и%run
в комментариях ниже).Также см. этот nbviewer для дальнейшего объяснения с примерами. Надеюсь это поможет.
Спасибо, я использую windows и пробовал! Dir, output
!dir Volume in drive D is Documents
и т. Д. Так что это не только bash, но и cmd! — person aaronsstack; 22.08.2015@iamaziz Я думаю, вы имели в виду
!python --version
(опечатка) — person aaronsstack; 17.02.2016Азиз, это отличный ответ. Одно небольшое замечание: использование
%run myfile.py
в отличие от!python myfile.py
очень немного отличается. Если вы сделаете первое, он будет выполняться с использованием ядра ipython, включая любую настроенную предварительную загрузку. Небольшая проблема, но сегодня я столкнулся с ошибкой, которая имела для меня значение. — person aaronsstack; 14.03.2017Если вы хотите выполнить эквивалент
%run myfile.py
, описанного в этом ответе, при включении магических команд ячейки IPython в свой сценарий, используйте%run myfile.ipy
. — person aaronsstack; 24.09.2019Я не нашел удовлетворительного ответа на этот вопрос, например, как загрузить, запустить и сохранить. Перезапись с использованием
%%writefile
или%save -f
не работает, если вы хотите отображать инкрементные изменения в git. Это будет выглядеть так, как будто вы удалили все строки вfilename.py
и добавили все новые строки, даже если вы редактировали только одну строку.