2 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個贊
我只建議設(shè)置nargs='?',然后分別處理Nonetype的情況。根據(jù)官方文檔,“ FileType對象了解偽參數(shù)'-',并針對可讀FileType對象將其自動轉(zhuǎn)換為sys.stdin,對于可寫FileType對象將其自動轉(zhuǎn)換為sys.stdout”。因此,如果您想要標(biāo)準(zhǔn)輸入,只需給它一個破折號。
例子
import argparse
import sys
parser = argparse.ArgumentParser()
parser.add_argument('inputfile', nargs='?', type=argparse.FileType('r'))
if not inputfile:
sys.exit("Please provide an input file, or pipe it via stdin")

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個贊
使用鏈接到問題的信息,如何sys.stdin.isatty()
檢查程序是否正在運(yùn)行的實(shí)例是管道的一部分,如果不是,則從輸入文件中讀取,否則從中讀取stdin
。如果輸入文件不存在或stdin
為空,則拋出錯誤。
添加回答
舉報(bào)