Python で stdin から入力を読み込む方法
-
Python で
stdin
から読み込むにはfileinput.input()
を使用する -
sys.stdin
から Python のstdin
を読み込むにはsys.stdin
を使用する - まとめ
このチュートリアルでは、Python の stdin
から入力を読み込む方法について説明します。これはコンソールから直接読み込むか、コンソールで指定されたファイル名から読み込むかのどちらかです。
Python で stdin
から読み込むには fileinput.input()
を使用する
Python の stdin
から読み込むには、fileinput
モジュールを使用することができます。fileinput.input()
は、コマンドライン引数で指定された入力ファイル名の全行を読み込みます。引数が指定されていない場合は、指定された標準入力を読み込みます。
以下の例は、指定された入力ファイル名からの読み込みを示しています。
以下の sample.txt
を使用します。
Hello
Line1
Line2
その下にはスクリプト read.py
があります。
import fileinput
for line in fileinput.input():
print(line.rstrip())
以下のように実行します。
python read.py "sample.txt"
出力:
Hello
Line1
Line2
以下の例は、標準入力からの読み込みを説明するものです。
import fileinput
for line in fileinput.input():
print("Output:", line.rstrip())
実行結果と出力は以下のようになります。
python read.py
Line 1
Output: Line 1
Line 2
Output: Line2
^Z
このように、後で処理するためにデータを保存しておくこともできます。
import fileinput
data = []
for line in fileinput.input():
data.append(line.rstrip())
line.rstrip()
を使用していることに注意してください。これは末尾の改行を削除するためです。
y
を入力すると、すべての変数が削除されます。
sys.stdin
から Python の stdin
を読み込むには sys.stdin
を使用する
もう一つの方法は、sys.stdin
を使って Python の stdin
からデータを読み込むことです。以下の例では、stdin
から 1 行ずつデータを読み込む様子を示しています。
import sys
for line in sys.stdin:
print("Output:", line.rstrip())
実行結果と出力を以下に示します。
python read.py
Line 1
Output: Line 1
Line 2
Output: Line2
^Z
また、stdin
から一行ずつではなく、一度にすべてのデータを読み込むこともできます。
以下の例はこれを示しています。
import sys
data = sys.stdin.readlines()
data = [line.rstrip() for line in data]
line.rstrip()
を使っていることに注意してほしい。これは末尾の改行を削除するためです。
まとめ
Python で stdin
の入力を読み込むためのメソッドとして、fileinput.input()
と sys.stdin
の 2つのメソッドについて説明しました。fileinput.input()
はコマンドライン引数で指定したファイル名や標準入力からデータを読み込むことができますが、sys.stdin
は標準入力からしかデータを読み込むことができません。