Python で stdin から入力を読み込む方法

Hassan Saeed 2023年1月30日
  1. Python で stdin から読み込むには fileinput.input() を使用する
  2. sys.stdin から Python の stdin を読み込むには sys.stdin を使用する
  3. まとめ
Python で 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

Python で標準入力から入力を読み込む

このように、後で処理するためにデータを保存しておくこともできます。

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 は標準入力からしかデータを読み込むことができません。

関連記事 - Python Input