[英]Read from stdin or input file with argparse
我想使用argparse
無論從讀取stdin
或輸入文件。 換一種說法:
我要求的行為類似於此問題中描述的行為,但我希望argparse
不會將文件識別為失敗的輸入。
使用您鏈接到的問題中的信息,使用sys.stdin.isatty()
檢查程序運行的實例是否是管道的一部分,如果沒有,則從輸入文件讀取,否則從stdin
讀取。 如果輸入文件不存在或stdin
為空則拋出錯誤。
希望有所幫助。
我建議只設置nargs='?'
然后單獨處理Nonetype的情況。 根據官方文檔 , “FileType對象理解偽參數' - '並自動將其轉換為sys.stdin以獲取可讀的FileType對象,並將sys.stdout轉換為可寫的FileType對象” 。 如果你想要stdin,那就試試吧。
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")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.