3

この質問の目的のために、次のように縮小できるPythonスクリプトがあります。

import sys
data = sys.stdin.read()
# do something with data ...

アイデアは、このスクリプトをシェルから次のように実行することです

python my_script.py < datafile

コマンドを使用して IPython からスクリプトを呼び出し、run次のことを試してみました。

In [1]: run my_script.py < datafile

しかし、どうやらこれは から読み取らずdatafile、IPython ターミナルでユーザー入力を待機しているようです。

runコマンドが端末からではなくファイルから標準入力を読み取るようにするにはどうすればよいですか? コマンドのドキュメントを確認しましたrunが、これにはポインターが含まれていません。

dataスクリプトを呼び出した後、IPython ターミナルからスクリプト (ここの例) で定義されている変数にアクセスできる回答を具体的に探しています。

4

3 に答える 3

1

試してみませんか?

data = !cat datafile
于 2013-08-09T10:34:54.610 に答える
0

これを少し違う方法で書くことは可能ですか?たとえば、次のコードは、必要なことを行う可能性があります。

import sys
data = open(sys.argv[1]).read()

次に、IPython ターミナルから、シンボル%runなしで使用します。<

In [1]: %run my_script.py my_data.txt
于 2013-08-08T20:08:32.833 に答える
0

1 つの解決策は、次のようにスクリプトを実行することです。

In [1]: !python my_script.py < datafile

明らかに、これはrunコマンドを回避しますが、IPython 内からスクリプトを実行できます。

于 2013-08-08T12:01:41.030 に答える