Как загружать / редактировать / запускать / сохранять текстовые файлы (.py) в ячейку записной книжки IPython?

Недавно я перешел на использование записных книжек IPython как часть своего рабочего процесса. Однако мне не удалось найти способ импортировать файлы .py в отдельные ячейки открытой записной книжки IPython, чтобы их можно было редактировать, запускать и затем сохранять. Можно ли это сделать?

Я нашел это в документации, которая сообщает мне, как импортировать файлы .py в качестве новых записных книжек, но это не соответствует тому, чего я хочу достичь.

Любые предложения будут высоко ценится.

Хороший вопрос. Мне еще предстоит увидеть действительно удовлетворительный ответ. Это особенно важно при обслуживании ноутбука IPython через Интернет. Если люди хотят видеть / редактировать исходный код импортируемых функций (с подсветкой синтаксиса и т. Д.), В настоящее время нет простого способа сделать это. Должна быть возможность просто открывать файлы py, не преобразовывая их в файлы ipynb.   —  person aaronsstack    schedule 05.03.2015

См. также:  Программное обновление значения настраиваемого атрибута, установленного в продукте WooCommerce
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 5
  1. aaronsstack

    РЕДАКТИРОВАТЬ. Начиная с IPython 3 (теперь проект Jupyter), в записной книжке есть текстовый редактор, который можно использовать как более удобную альтернативу для загрузки / редактирования / сохранения текстовых файлов.

    Текстовый файл можно загрузить в ячейку записной книжки с помощью волшебной команды %load.

    Если вы выполните ячейку, содержащую:

    %load filename.py
    

    содержимое filename.py будет загружено в следующую ячейку. Вы можете редактировать и выполнять его как обычно.

    Чтобы сохранить содержимое ячейки обратно в файл, добавьте волшебную ячейку %%writefile filename.py в начало ячейки и запустите ее. Помните, что если файл с таким именем уже существует, он будет автоматически перезаписан.

    Чтобы увидеть справку по любой волшебной команде, добавьте ?: например, %load? или %%writefile?.

    Для получения общей справки по магическим функциям введите «% magic» Для получения списка доступных магических функций используйте% lsmagic. Для описания любого из них введите% magic_name?, Например ‘%CD?’.

    См. также: Магические функции из официального Документы IPython.

    Это плюс %save -f, кажется, способ сделать то, что я искал. Спасибо! person aaronsstack; 10.01.2014

    save -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

  2. aaronsstack

    Перетащите файл Python в «домашнюю» таблицу записных книжек Ipython, нажмите кнопку «Загрузить». Это создаст новую записную книжку только с одной ячейкой, содержащей содержимое вашего файла .py.

    Или скопируйте / вставьте из вашего любимого редактора;)

    Спасибо за ответ, но, как я уже упоминал в тексте сообщения, я стараюсь не создавать каждый раз новую записную книжку, но поддерживать сценарий .py из ячейки существующей записной книжки. person aaronsstack; 10.01.2014

    Исправьте меня, если я ошибаюсь: вы не хотите использовать блокнот в качестве текстового редактора? (Я имею в виду: каждая модификация в ячейке не изменяет файл .py). Кстати, я понятия не имею о собственном способе вставки содержимого .py в ячейку, я всегда копирую / вставляю свой код, когда это необходимо … извините person aaronsstack; 10.01.2014

  3. aaronsstack

    Я счел удовлетворительным использовать ls и cd в ipython notebook для поиска файла. Затем введите cat your_file_name в ячейку, и вы получите обратно содержимое файла, которое затем можно вставить в ячейку как код.

  4. aaronsstack

    Написать / сохранить

    %%writefile myfile.py

    • записать / сохранить содержимое ячейки в myfile.py (для добавления используйте -a). Другой псевдоним: %%file myfile.py

    Бежать

    %run myfile.py

    • запустите myfile.py и выведите результаты в текущую ячейку

    Загрузить / импортировать

    %load myfile.py

    • загрузить «import» 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

  5. aaronsstack

    Я не нашел удовлетворительного ответа на этот вопрос, например, как загрузить, запустить и сохранить. Перезапись с использованием %%writefile или %save -f не работает, если вы хотите отображать инкрементные изменения в git. Это будет выглядеть так, как будто вы удалили все строки в filename.py и добавили все новые строки, даже если вы редактировали только одну строку.

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: