IPythonのmagicコマンドにカスタムフラグを追加することはできますか?具体的には、私は手作りのフラグで%runコマンドを使用します:IPythonのマジックコマンドにカスタムフラグを追加するには? (.ipyファイル)
%run script.ipy --flag "option"
スクリプト内で "オプション"を使用できるようにします。 .pyファイルの場合
は、その答えはここに用意されていますCommand Line Arguments In Python
IPythonのmagicコマンドにカスタムフラグを追加することはできますか?具体的には、私は手作りのフラグで%runコマンドを使用します:IPythonのマジックコマンドにカスタムフラグを追加するには? (.ipyファイル)
%run script.ipy --flag "option"
スクリプト内で "オプション"を使用できるようにします。 .pyファイルの場合
は、その答えはここに用意されていますCommand Line Arguments In Python
コメントで示されているように、この質問は、Pythonスクリプトにコマンドライン引数を処理についてだけではありません。それは%run
で実行される.ipy
ファイルで処理することです。
私は
import sys
print(sys.argv)
として
test.ipy
を作成し、シェルからそれを実行した場合、私はコマンドライン引数を参照してください。
1223:~/mypy$ python3 test.ipy -test foo
['test.ipy', '-test', 'foo']
しかしipython
セッションから、私はしないでください
In [464]: %run test.ipy --flag test
['/usr/bin/ipython3']
py
という名前でコピーを作成する場合
In [468]: %run testipy.py --flag test
['testipy.py', '--flag', 'test']
したがって、%run ...ipy
の動作は異なります。これは一般的なPythonのコマンドラインではなく、ipython
の問題です。
================
%run
ドキュメントは、この点を持っている
:
テキストは上記しないための特別の使用量がありますapply: ファイル名が.ipy [nb]で終わる場合、ファイルはIPythonプロンプトにコマンドが記述されているかのように、ipythonスクリプト として実行されます。その場合
私が入力したときに、私がそうであるように、test.ipy
スクリプトは同じsys.argv
を見ている:
In [475]: sys.argv
Out[475]: ['/usr/bin/ipython3']
私はこのような文字列のカップルを追加することなどによって、現在のセッションでsys.argv
を変更するのであれば:
In [476]: sys.argv += ['--flag','test']
In [477]: sys.argv
Out[477]: ['/usr/bin/ipython3', '--flag', 'test']
In [479]: %run test.ipy
['/usr/bin/ipython3', '--flag', 'test']
私のipy
スクリプトで表示されるようになりました。
これは答えです。コマンドライン引数をsys.argv
に入れてから、%run ...ipy
を使用してください。
(私はと高度なことをやったときにsys.argv
をいじるのこの種をやった。)ipython
マジック
In [480]: %run??
が私にそのドキュメントとコードの両方を示して
より。したがって、私はそれが特別なファイル.ipy
をどのように扱っているか見ることができます。見つけやすいので、ここではコピーしないでください。
別の解決策があります - ipy
ファイルでコマンドラインスタイルのコーディングを使用しないでください。
私はそのテストファイルに
print(x)
の行を追加し、私のIpythonセッションで定義されたx
を持っている場合、私はその印刷を参照してください。しかし、同じ印刷物を.py
に入れて、私はNameerror
を手に入れます。彼らが入力したかのようにipy
が実行されていると言うとき、それはそれを意味します。実際には、ipy
を実行することは、クリップボードからの%paste
の代替です。
多くの場合、興味深く役立つが、私の場合はそれができない。 "test"は任意の文字列でなければなりません(ユーザーがコメントを追加する方法として機能します)。また、私はmagicコマンドを呼び出しているので、.ipyファイルを使用する必要があります。 – Laurent
もっと具体的な例が必要な場合があります。 'main'ネームスペースと' ipy'sの関係は何ですか?おそらく、 '%run'は正しいツールではありません。 – hpaulj
あなたはどんな魔法を使っていますか?現在の名前空間にアクセスする '%hist'のようなもの?または '%ls'はstandalongの' ipython'セッションで実行できますか? – hpaulj
これを試しましたか?何がうまくいかなかったのですか? –
構文は機能しますが、スクリプトのフラグにアクセスする方法はわかりません。 – Laurent
リンクされた質問で提供されているアプローチ(例えば、 'argparse')のいずれかを使うか、' import sys; sys.argv'を直接(それはリストです) –