Pythonスクリプトが手動入力を待つタイミングを識別する

Pythonスクリプトが手動入力を待つタイミングを識別する

私はPythonスクリプトを実行するシェルスクリプトを書いています。 Pythonスクリプトは手動入力を提供するために一時停止されます。しかし、スクリプトで毎回Enterキーを押すのは好きではありません。代わりに、実行中のシェルスクリプトから手動入力を渡したいと思います。

助けてください。方法がありますか?

ベストアンサー1

入力が1つだけ必要な場合は、echoパイプを使用してください。

echo | python script.py

echo空行(改行を含む)を標準出力として印刷し、Pythonスクリプトの入力にリダイレクトします。使用|。 Pythonが標準入力から読み取ると空白行が得られ続けます。

スクリプトでEnterキーを数回押す必要がある場合は、次のものを使用できます。yes注文するそしてパイプ:

yes "" | python script.py

このyesコマンドは、同じ行を標準出力に印刷し続けます。デフォルトでは文字列はですが、yここでは空の文字列に設定するので、常に改行文字になります。


特定のプロンプトに応じて入力が必要で、他の場合は他の入力が必要な場合は次のようにします。expect、これは「対話型プログラムと自動的にやり取りできるようにするTcl拡張です。」

Pythonの出力を読み、それに対する新しい入力を生成するためにシェルスクリプトを書くことは可能ですが、特にお勧めしません。これをしたい場合は参照してください高度な Bash スクリプトガイドの IO リダイレクト:これを行うには、ファイル記述子を複製する必要があります。また、使用することができますmkfifo名前付きパイプファイルを作成してから、正常に読み書きします。

正直に言うと、次のいずれかを実行するポイントに達すると、代替案について考え始めます。シェルスクリプトはそのために作成されておらず、たとえばPython自体でスクリプトを作成する方が簡単です。

おすすめ記事