Як завантажити / редагувати / запустити / зберегти текстові файли (.py) у комірку ноутбука IPython?


232

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

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

Будь-які пропозиції були б вдячні.


6
Гарне питання. Я ще не бачив справді задоволеної відповіді. Це особливо важливо при обслуговуванні ноутбука IPython через Інтернет. Якщо люди хочуть бачити / редагувати вихідний код імпортованих функцій (із підсвічуванням синтаксису тощо), наразі це не так просто. Потрібно мати можливість просто відкривати py-файли, не перетворюючи їх у ipynb-файли.
Петро

Відповіді:


306

EDIT : Починаючи з IPython 3 (зараз проект Юпітера), ноутбук має текстовий редактор, який можна використовувати як більш зручну альтернативу для завантаження / редагування / збереження текстових файлів.

Текстовий файл можна завантажити в комірку зошита за допомогою магічної команди %load.

Якщо ви виконуєте клітинку, що містить:

%load filename.py

вміст filename.pyбуде завантажено в наступну комірку. Ви можете редагувати та виконувати його як завжди.

Щоб зберегти вміст комірки назад у файл, додайте клітинку-магію %%writefile filename.pyна початку комірки та запустіть її. Будьте обережні, якщо файл з таким самим іменем вже існує, він буде мовчазно перезаписаний .

Щоб побачити допомогу для будь-якої магічної команди, додайте ?: like %load?або %%writefile?.

Для загальної допомоги щодо магічних функцій введіть "% magic". Для переліку доступних магічних функцій використовуйте% lsmagic. Для опису будь-якого з них введіть% magic_name?, Наприклад, '% cd?'.

Дивіться також: Магічні функції з офіційних документів IPython.


3
Це, плюс, %save -fздається, спосіб зробити те, що я шукав. Дякую!
aaronsstack

2
save -fє своєрідним непрямим способом збереження у файлі і працюватиме лише у тому випадку, якщо спочатку виконати комірку, а потім надати правильну посилання. Взагалі простіше використовувати %%writefileте, що записує поточну комірку у файл. Я оновив відповідь, щоб згадати про це.
user2304916

4
Нова магічна команда наразі %loadpy(замість %load).
AlQuemist

1
в відповідно до ipython.org/ipython-doc/3/interactive/magics.html використання %loadнормально, йти вперед: " %loadpy ( Ім'я користувача %load ) - %loadpyотримав деяку гнучкість і впустив вимога про .pyпродовження Так він був перейменований просто в. %load. Щоб %loadотримати додаткову інформацію, ви можете переглянути докстринг. "
Майкл

118

Написати / зберегти

%%writefile myfile.py

  • записувати / зберігати вміст комірок у myfile.py (використовувати -aдля додавання). Ще один псевдонім:%%file myfile.py

Бігти

%run myfile.py

  • запустіть myfile.py та виведіть результати у поточній комірці

Для завантаження / імпорту

%load myfile.py

  • завантажте "імпорт" myfile.py у поточну комірку

Для більше магії та допомоги

%lsmagic

  • перерахуйте всі інші прохолодні магічні комірки.

%COMMAND-NAME?

  • довідки щодо використання певної команди. тобто%run?

Примітка

Окрім магічних команд комірки, ноутбук IPython (зараз ноутбук Юпітера) настільки крутий, що дозволяє використовувати будь-яку команду unix прямо з клітини (це також еквівалентно використанню команди %%bashмагічної комірки).

Щоб виконати команду unix з комірки, просто передуйте команді з !позначкою. наприклад:

  • !python --version дивіться вашу версію python
  • !python myfile.pyзапустіть myfile.py та виведіть результати у поточній комірці, як і %run(див. різницю між !pythonта %runв коментарях нижче).

Також див. Цей nbviewer для подальшого пояснення з прикладами. Сподіваюсь, це допомагає.


1
Дякую, я використовую windows та пробував! Dir, output !dir Volume in drive D is Documentsтощо ... Тож це не просто баш, а й cmd!
Брайан

1
@iamaziz Я думаю, ти мав на увазі !python --version(помилку)
Олександр

5
Азіз, це відмінна відповідь. Одне маленьке зауваження: це дуже небагато відрізняється від використання %run myfile.pyв протилежність !python myfile.py. Якщо ви зробите попереднє, воно буде виконуватися за допомогою ядра ipython, включаючи те, що налаштовано попередню завантаження. Невелике питання, але я сьогодні зіткнувся з помилкою, де це змінило мене.
Трістан Рейд

Якщо ви хочете виконати еквівалент %run myfile.pyописаного в цій відповіді, включаючи магічні команди комірки IPython у свій сценарій, використовуйте %run myfile.ipy.
Вейн

8

Перетягніть файл Python у таблицю "домашніх" ноутбуків Ipython, натисніть кнопку "Завантажити". Це створить новий ноутбук із лише однією коміркою, що містить вміст файлу .py

Інше скопіюйте / вставте з улюбленого редактора;)


1
Дякую за вашу відповідь, але, як я вже згадував у своїй публікації, я прагну уникати створення нового блокнота щоразу, але підтримувати сценарій .py із клітинки наявного ноутбука.
aaronsstack

Виправте мене, якщо я помиляюся: ви не хочете використовувати ноутбук як текстовий редактор? (Я маю на увазі: кожна модифікація в комірці не змінить .py-файл). До речі, у мене немає поняття про рідний спосіб вставити .py вміст у клітинку, я завжди копіюю та вставляю свій код, коли потрібно ... вибачте
Рафаель Брауд

5

Я вважаю задовільним використання ls та cd в ipython notebook для пошуку файлу. Потім введіть cat в свою клітинку your_file_name, і ви отримаєте назад вміст файлу, який потім зможете вставити у комірку як код.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.