1. ホーム
  2. ipython-notebook

ipython のノートブックのセルで、`%bash` や `%script` 内の python 変数にアクセスできますか?

2023-07-27 06:54:14

質問

の中から現在の python カーネル内の変数にアクセスする方法はありますか? %%bash または他の %%script のセルは?

コマンドライン引数または環境変数として?

どのように解決するのですか?

Pythonの変数は、最初の行にある %%bash または %%script というように、スクリプトにコマンドラインパラメータとして渡すことができます。例えば、bashではこんなことができます。

%%bash -s "$myPythonVar" "$myOtherVar"
echo "This bash script knows about $1 and $2"

-s コマンドラインオプションは、bashに位置決めパラメータを渡すことができます。 $n を通してアクセスします。bash の位置変数に実際に代入されるのは、次の結果であることに注意してください。 str(myPythonVariable) . 引用文字(またはその他のbashに依存する文字)を含む文字列を渡す場合は、バックスラッシュでエスケープする必要があります(例: \" ).

引用符は重要です - これがないと Python 変数 (文字列表現) はスペースで分割されてしまうので、もし myPythonVardatetime.datetimestr(myPythonVar) として "2013-10-30 05:04:09.797507" とすると、上記のbashスクリプトは3つの位置変数を受け取ることになり、最初の2つは値を持つ 2013-10-3005:04:09.797507 . と出力されることになる。

This bash script knows about 2013-10-30 and 05:04:09.797507

もし、変数に名前を付けたい場合で、Linuxを使用しているのであれば、以下のような方法があります。

%%script env my_bash_variable="$myPythonVariable" bash
echo myPythonVariable\'s value is $my_bash_variable

変数の代入を複数指定することができます。ここでも引用符やその他のものに注意してください(ここでbashは苦言を呈します!)。なぜこれが機能するのかを理解するために env のマニュアルページを参照してください。