3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
一個處理資料的 CLI command 一定會有資料輸入,而輸入來源可以是檔案,也可以是從標準輸入(Standard Input, STDIN)而來,若需要同時支援標準輸入與指定參數(檔案路徑),則需要判斷輸入來源為何。參數判斷的部分,若是使用 argparse  開發的話,則在呼叫 argparse.add_argument() 時就可以設定好參數,最後呼叫 argparse.parse_args() 時即可得知是否有參數輸入,那標準輸入要如何判斷?   I/O Redirection 與 TTY 一個標準的 Linux TTY  是可以透過指令與機器互動的(Interactive),而當我們透過 I/O Redirection  將輸出接到另一個程式的標準輸入時,則另一個程式並不是在 TTY 下執行,因為該程式不能夠透過指令進行互動。 因此,只要判斷 Python 是不是在 TTY 下執行,就可以判斷 Python 在執行時是否有標準輸入。我們可以簡單地透過 sys.stdin.isatty()  來達成這件事情。 $ python -c 'import sys; print(sys.stdin.isatty())' True $ echo test | python -c 'import sys; print(sys.stdin.isatty())' False $ python -c 'import sys; print(sys.stdin.isatty())' < ~/.bashrc False References What’s the best way to tell if a Python program has anything to read from stdin? – Stack Overflow 30.1. sys — System-specific parameters and functions — Python 3.7.0 documentation

本文由caloskaoorg提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦