IPython のマジック コマンドにカスタム フラグを追加することは可能ですか? 具体的には、%run コマンドに自家製のフラグを付けて使用したいと思います。
%run script.ipy --flag "option"
スクリプト内で「オプション」を使用できるようにします。
.py ファイルの場合、答えは次のとおりです: Command Line Arguments In Python
IPython のマジック コマンドにカスタム フラグを追加することは可能ですか? 具体的には、%run コマンドに自家製のフラグを付けて使用したいと思います。
%run script.ipy --flag "option"
スクリプト内で「オプション」を使用できるようにします。
.py ファイルの場合、答えは次のとおりです: Command Line Arguments In Python
コメントに示されているように、この質問は、Python スクリプトでコマンドライン引数を処理することだけではありません。.ipy
経由で実行されるファイルでそれらを処理することです%run
。
test.ipy
として作成した場合
import sys
print(sys.argv)
シェルから実行すると、コマンドライン引数が表示されます。
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
動作が異なります。これはipython
問題であり、一般的な Python コマンドラインの問題ではありません。
================
%run
ドキュメントには次の点があります。
上記のテキストが当てはまらない特殊な使用法が 1 つあります。ファイル名が .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
高度なことをするときに、この種の をいじりましたargparse
。)
より多くipython
の魔法
In [480]: %run??
ドキュメントとコードの両方を表示します。.ipy
このように、ファイル スペシャルをどのように扱っているかがわかります。見つけやすいので、ここにコピーするのは控えます。
別の解決策があります - コマンドライン スタイルのファイルのコーディングを使用しないでくださいipy
。
私が追加した場合
print(x)
そのテストファイルに行をx
追加し、Ipython セッションで定義すると、その出力が表示されます。しかし、同じプリントを に入れると.py
、 が得られますNameerror
。ipy
が入力されたかのように実行されると彼らが言うとき、彼らはそれを意味します。を実行することは、事実上、クリップボードからのipy
代替手段です。%paste