標準モジュールのfileinputを使用するとコンソール入力待ちがめちゃくちゃ簡単に実現できたので紹介します。
以下サンプルコードになります。
import fileinput
for line in fileinput.input():
# コンソールで改行する毎にlineに入力文字列が渡される
print("Input string: {}".format(line))
if line == "end\n":
# 終了する場合(lineには改行コードも含まれるので注意)
break
実行すると、コンソール入力待ちになります。
コンソールで改行(エンター)を入力すると、改行までの文字列が上記のlineに渡されます。
その後もコンソール入力を待ち続けるので改行毎の文字列を繰り返し処理できます。
終了処理を用意しておく場合は上記のように特定の文字が渡されたら終了、とかにしておけば良いかと思います。
(Ctrl+Cでも抜けれますが)
with句を使って書くとお作法を守ってるっぽくていいかもしれません。
(標準入力(sys.stdin)に対してこのお作法が必要なのかは疑問ですが)
import fileinput
with fileinput.input() as f:
for line in f:
# コンソールで改行する毎にlineに入力文字列が渡される
print("Input string: {}".format(line))
if line == "end\n":
# 終了する場合(lineには改行コードも含まれるので注意)
break
※ちなみにこの処理ってコンソール入力待ちであってます?
ターミナル入力待ち、標準入力待ち、ユーザ入力待ち…呼び方は色々ありそうですが…
参考
fileinput --- 複数の入力ストリームをまたいだ行の繰り返し処理をサポートする — Python 3.10.13 ドキュメント
コメント