プログラミング

Pythonで入力・出力リダイレクトをやってみる!

こんにちは、MSKです。
今回はPythonの入出力リダイレクトをやってみました。

リダイレクトって?

標準出力や標準入力など標準ストリームとよばれる経路の具体的な出力先や入力元を変更する機能をリダイレクトといいます。

出力先や入力元の指定はコマンドラインで行います。
これからも分かるようにリダイレクトはOS側の機能です。

入力リダイレクトは次のように「<」を使います。
コマンドへの入力を標準入力ではなく、ファイルからの入力にする場合は次のように行います。

コマンド < ファイル名


出力リダイレクトは次のように「>」と使います。
コマンドからの出力先を標準出力ではなく、ファイルにする場合は次のように行います。

コマンド > ファイル名


上の場合、追記ではなく上書きになります。
追記の場合は次のように「>>」を使います。

コマンド >> ファイル名

まずはやってみる

とりあえず、入出力リダイレクトを行ってみます。

入力リダイレクト

次のようにtest.txtを作成します。

one
two
three
four
five
six


次のようにmain.pyを作成します。

while True:
    try:
        input_value: str = input()
        print(input_value)
    except EOFError:
        break

input()でファイルの内容を1行ずつ取り出します。
EOFErrorでファイルの終端まで来たことが分かるので、そこでループを抜けます。

次のようにプログラムを実行します。

python main.py < test.txt


コマンドプロンプト上にtest.txtの内容が表示されると思います。

出力リダイレクト

次は簡単に出力リダイレクトを試します。
main.pyを次のように作成します。

print("Hello, World!")
print("Hoge, Hoge")


これを次のように実行します。

python main.py > test.txt

実行するとtest.txtに

Hello, World!
Hoge, Hoge

と出力されていることが確認できます。

次に出力リダイレクトを追記で試してみます。

python main.py >> test.txt

実行するたびに、

Hello, World!
Hoge, Hoge

が追記されていきます。

最後に

今回はPythonで入出力リダイレクトを使ってみました。
標準入力で入力できるデータは少なく、大量のテキストデータやバイナリデータを入力したい場合は標準入力では不可能です。
標準出力でも大量のテキストやバイナリデータが出力されるとコマンドプロンプト上ですべてを把握するのは不可能です。

標準入出力で良い場合は標準入出力で、そうでない場合には入出力先をファイルに切り替えるとするとプログラムは1つですみます。
入出力リダイレクトはこういう場合に使えます。


以上、「Pythonで入力・出力リダイレクトをやってみる!」でした。
最後までご覧頂き、ありがとうございました。

ABOUT ME
MSK
九州在住の組み込み系エンジニアです。 2児の父親でもあります。 数学やプログラミングが趣味です。 最近RustとReact、結び目理論と曲面結び目理論にはまっています。