Python スクリプトが手動入力を待機しているかどうかを識別する

Python スクリプトが手動入力を待機しているかどうかを識別する

私は Python スクリプトを実行するシェル スクリプトを書いています。Python スクリプトは、手動で Enter キーを入力するまで停止します。ただし、スクリプトを実行するたびに Enter キーを押す必要はありません。代わりに、実行中のシェル スクリプトから手動で Enter キーを渡します。

もしそれを実行する方法があれば、助けてください。

答え1

必要な入力が 1 つだけの場合は、echoパイプを使用します。

echo | python script.py

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

スクリプトでEnterキーを複数回押す必要がある場合は、yes指示そしてパイプ:

yes "" | python script.py

このyesコマンドは、同じ行を標準出力に永久に繰り返し出力します。デフォルトでは文字列は ですyが、ここでは空の文字列にして、永久に改行だけになるようにします。


特定のプロンプトへの応答としてEnterキーが必要な場合、また他の場合には別の入力が必要な場合は、expectこれは、「対話型プログラムとのやり取りを自動化できる Tcl 拡張機能」です。

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

正直に言うと、これらのいずれかのアプローチを実行する段階に達した場合は、別のアプローチについて考え始めることをお勧めします。シェル スクリプトはこれ向けに構築されていないため、たとえば Python 自体でスクリプトを記述する方がはるかに簡単です。

関連情報