Pythonでstdinから読み込む方法はどうすればいいですか。
Pythonで標準入力からデータを読み取る方法は3つあります。
-
- sys.stdin
-
- 入力を取得するためのsys.stdin
input() built-in function
入力を取得するためのinput()関数
fileinput.input() function
入力を取得するためのfileinput.input()関数
標準入力から読み込むためにsys.stdinを使用する
インタプリタによって、Pythonのsysモジュールのstdinは標準入力に使用されます。内部的には、input()関数が呼び出されます。入力文字列は最後に改行文字(\n)が追加されます。したがって、rstrip()関数を使用してそれを削除することができます。以下は、標準入力からユーザーメッセージを読み取り、処理するための簡単なプログラムです。ユーザーが「Exit」というメッセージを入力すると、プログラムは終了します。
import sys
for line in sys.stdin:
if 'Exit' == line.rstrip():
break
print(f'Processing Message from sys.stdin *****{line}*****')
print("Done")
出力:
Hi
Processing Message from sys.stdin *****Hi
*****
Hello
Processing Message from sys.stdin *****Hello
*****
Exit
Done
ユーザーが「Exit」メッセージを入力したかどうかをチェックするために、rstrip()を使用して末尾の改行文字を削除することに注意してください。
2. stdinデータを読み込むためにinput()関数を使用する。
Pythonのinput()関数を使用することで、標準入力データを読み取ることもできます。また、ユーザーにメッセージを表示することもできます。以下は、ユーザーが”Exit”メッセージを入力するまで、標準入力メッセージを読み取り、処理する無限ループの単純な例です。
while True:
data = input("Please enter the message:\n")
if 'Exit' == data:
break
print(f'Processing Message from input() *****{data}*****')
print("Done")
出力:
input()関数は、ユーザーメッセージに改行文字を追加しません。
3. fileinputモジュールを使用して標準入力を読み込む。
標準入力から読み取るために、fileinput.input() 関数も使うことができます。fileinput モジュールでは、標準入力やファイルリストにループするためのユーティリティ関数が提供されています。input() 関数に引数を指定しない場合、標準入力から引数を読み取ります。この関数は sys.stdin と同様に動作し、ユーザーが入力したデータの末尾に改行文字を追加します。
import fileinput
for fileinput_line in fileinput.input():
if 'Exit' == fileinput_line.rstrip():
break
print(f'Processing Message from fileinput.input() *****{fileinput_line}*****')
print("Done")
出力: