1

IPython のマジック コマンドにカスタム フラグを追加することは可能ですか? 具体的には、%run コマンドに自家製のフラグを付けて使用したいと思います。

%run script.ipy --flag "option"

スクリプト内で「オプション」を使用できるようにします。

.py ファイルの場合、答えは次のとおりです: Command Line Arguments In Python

4

1 に答える 1

1

コメントに示されているように、この質問は、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、 が得られますNameerroripyが入力されたかのように実行されると彼らが言うとき、彼らはそれを意味します。を実行することは、事実上、クリップボードからのipy代替手段です。%paste

于 2016-07-05T19:27:58.877 に答える