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

  1. Python で stdin から読み込むには fileinput.input() を使う
  2. sys.stdin から Python の stdin を読み込むには sys.stdin を使う
  3. 結論

このチュートリアルでは、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

  • Python で入力を整数として読み取る方法
  • comments powered by Disqus