0

echo を使用して python スクリプトにデータを渡し、その後、ユーザーにオプションを入力するように促したいと考えています。EOFErrorのすべてのデータを読み取ったため、発生していると思われる を実行していますsys.stdin。この問題を解決するにはどうすればよいですか? ありがとう!

コード.py:

x = ''
for line in sys.stdin:
  x += line
y = raw_input()

利用方法:

echo -e -n '1324' | ./code.py

でのエラーraw_input():

EOFError: EOF when reading a line
4

2 に答える 2

1

使用する:

{ echo -e -n '1324'; cat; } | ./code.py

最初echoにリテラル文字列をパイプに書き込み、次にcat標準入力から読み取り、それをパイプにコピーします。Python スクリプトは、これをすべて標準入力として認識します。

于 2016-08-09T16:46:51.760 に答える
0

標準入力 (リダイレクト) を介してデータを送信してから、対話モードに戻すことはできません。

を実行するa | bと、 b は標準入力から読み取ることができなくなります。それをしたい場合は、a終了してパイプを壊すとすぐに停止します。

しかし、a終わったら、それはあなたが再び手に入れるという意味ではありませんstdin

たぶん、やりたいことを変えることができます。例:

echo -n -e '1324' | ./code.py

になる

./code.py '1234' '5678'

、...sys.argv[]の値を取得するために使用します12345678

import sys

x = ''
for line in sys.argv[1:]:
  x += line+"\n"

y = raw_input()

出力する行が多い場合は、ファイルと読み取る内容を引数に渡します

import sys

x = ''
for line in open(sys.argv[1],"r"):
  x += line

y = raw_input()
于 2016-08-09T16:46:17.760 に答える