テキストファイル(.py)をIPython Notebookセルにロード/編集/実行/保存する方法は?


232

私は最近、ワークフローの一部としてIPythonノートブックを使用するようになりました。ただし、開いているIPythonノートブックの個々のセルに.pyファイルをインポートして、編集、実行、保存できるようにする方法を見つけることに成功していません。これはできますか?

.pyファイルを新しいノートブックとしてインポートする方法を説明するドキュメントでこれを見つけましが、これは私が達成したいことには達していません。

任意の提案をいただければ幸いです。


6
良い質問。本当に満足のいく答えはまだ見ていません。インターネット経由でIPythonノートブックを提供する場合、これは特に重要です。インポートされた関数のソースコードを(構文の強調表示などで)表示/編集したい場合、現時点では簡単な方法はありません。pyファイルをipynbファイルに変換せずに開くことができるはずです。
Peter

回答:


306

編集:IPython 3(現在はJupyterプロジェクト)以降、ノートブックにはテキストエディターがあり、テキストファイルの読み込み/編集/保存のより便利な代替手段として使用できます。

テキストファイルは、magicコマンドを使用してノートブックセルに読み込むことができます%load

以下を含むセルを実行すると、

%load filename.py

の内容がfilename.py次のセルに読み込まれます。通常どおり編集して実行できます。

セルの内容をファイルに保存するには、セル%%writefile filename.pyの先頭にcell-magic を追加して実行します。同じ名前のファイルがすでに存在する場合は、警告なしに上書きされることに注意してください

マジックコマンドのヘルプを表示するには、?:のような%load?またはを追加します%%writefile?

マジック関数の一般的なヘルプについては、「%magic」と入力してください。使用可能なマジック関数のリストについては、%lsmagicを使用してください。それらの説明については、%magic_name?を入力してください(例: '%cd?')。

参照:公式IPythonドキュメントのマジック関数


3
これに加え%save -fて、私が探していた方法を実行する方法のようです。ありがとう!
アーロンスタック2014年

2
save -fはファイルに保存する一種の間接的な方法であり、最初にセルを実行してから正しい参照を提供する場合にのみ機能します。一般に%%writefile、現在のセルをファイルに書き込む方が使いやすいです。これについて言及するために回答を更新しました。
user2304916 2014

4
新しいmagicコマンドは現在%loadpy(の代わりに%load)です。
AlQuemist

1
ipython.org/ipython-doc/3/interactive/magics.htmlによると%load、使用は順調に進んでいます: " %loadpyAlias of %load)- %loadpyある程度の柔軟性が得られ、.py拡張機能の要件がなくなりました。詳細については%load%loaddocstringを参照してください。」
マイケル

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ノートブック(現在はJupyterノートブック)は非常に優れているので、セルから直接任意のunixコマンドを使用できます(これは、%%bashセルマジックコマンドを使用する場合と同じです)。

セルからUNIXコマンドを実行するには、コマンドの前に!マークを付けます。例えば:

  • !python --version Pythonのバージョンを確認する
  • !python myfile.pymyfile.pyを実行し、結果を現在のセルに出力します%run(以下のコメント!pythonとの違いを参照してください%run)。

また、例を使用した詳細な説明については、このnbviewerを参照してください。お役に立てれば。


1
おかげで、私はWindowsを使用して!dirや出力!dir Volume in drive D is Documentsなどを試しました...したがって、それはbashだけでなく、cmdでもあります。
ブライアン、2015

1
@iamaziz !python --version(typo)を意味すると思います
アレクサンドル

5
アジズ、これは素晴らしい答えです。小さな注意点:と%run myfile.pyは対照的に、使用方法は少し異なり!python myfile.pyます。前者を実行すると、構成済みのプリロードを含め、ipythonカーネルを使用して実行されます。小さな問題でしたが、今日私はバグに遭遇しました。
Tristan Reid

%run myfile.pyスクリプトにIPythonセルマジックコマンドを含めながら、この回答で説明されているものと同等のことを実行する場合は、を使用します%run myfile.ipy
Wayne

8

PythonファイルをIpython notebooks "home" notebooksテーブルにドラッグアンドドロップし、[アップロード]をクリックします。これにより、.pyファイルの内容を含むセルが1つだけの新しいノートブックが作成されます

または、お気に入りのエディターからコピー/貼り付け;)


1
お返事ありがとうございます。投稿の本文で述べたように、毎回新しいノートブックを作成することは避け、既存のノートブックのセル内から.pyスクリプトを維持することを目指しています。
アーロンスタック2014年

私が間違っている場合は修正してください。ノートブックをテキストエディターとして使用しないのですか?(つまり、セルを変更しても.pyファイルは変更されません)。ちなみに、私は、セル内の.pyコンテンツを挿入するネイティブな方法のか見当もつかない、私はいつも必要なときに自分のコードを貼り付けます...申し訳ありません/コピー
ラファエルBraud

5

私は、ファイルを見つけるためにipythonノートブック内でlsとcdを使用することで満足できると思いました。次に、セルにcat your_file_nameと入力すると、ファイルの内容が返されます。これをコードとしてセルに貼り付けることができます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.