Categories: Python

Python 標準輸入 stdin、標準錯誤 stderr 使用教學與範例

介紹如何在 Python 中從標準輸入(standard input)讀取資料,以及透過標準錯誤(standard error)輸出錯誤訊息。

標準輸入

sys 模組所提供的 stdin 可以讓程式設計者從標準輸入讀取資料,其使用方式就跟普通檔案一樣:

import sys

# 從標準輸入讀取資料
for line in sys.stdin:

    # 去除空白與換行字元
    line = line.rstrip()

    print(line)

若要在程式執行期間讓使用者輸入資料,可以使用 input

# 讓使用者輸入資料
data = input("請輸入資料:")

# 輸入的資料
print(data)

fileinput 模組也可以用來讀取標準輸入的資料,不過它的功能更豐富,若執行的指令稿沒有指定任何參數,它就會從標準輸入讀取資料,而如果執行時在參數列指定檔案名稱,則 fileinput 就會自動從該檔案中讀取資料:

import fileinput

# 從參數指定的檔案或標準輸入讀取資料
for line in fileinput.input():

    # 去除空白與換行字元
    line = line.rstrip()

    print(line)

將上面這段指令稿儲存為 myscript.py 後,可以有兩種資料輸入方式:

# 從標準輸入讀取資料
python3 myscript.py

# 從 infile.txt 檔案讀取資料
python3 myscript.py infile.txt

標準錯誤

標準錯誤(standard error)是專門用於輸出警告或錯誤訊息的輸出管道,在 Python 中我們可以將訊息輸出至 sys.stderr 這個特殊檔案,這樣這些訊息就會透過標準錯誤來輸出。

import sys

# 將訊息輸出至標準錯誤
print("Hello, Error!", file=sys.stderr)

實務上我們可以定義一個專門用於輸出警告或錯誤的 eprint 函數,這樣會比較方便:

import sys

# 專門用於輸出警告或錯誤訊息的函數
def eprint(*args, **kwargs):
    # 將訊息輸出至標準錯誤
    print(*args, file=sys.stderr, **kwargs)

# 輸出警告或錯誤訊息
eprint("Hello, Error!")

參考資料:WikibooksStackOverflowStackOverflow

Share
Published by
Office Guide

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

9 個月 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

9 個月 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

9 個月 ago

Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例

本篇介紹如何在 Windows...

10 個月 ago

Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例

介紹如何在 Linux 中使用...

11 個月 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

11 個月 ago