我对使用 argparse 的 ArgumentDefaultsHelpFormatter 类格式化程序感兴趣(我的程序有几个子命令)。默认情况下,输入和输出参数分别设置为 sys.stdin 和 sys.stdout。然而,这两个参数的格式可能会让用户有点困惑(例如(默认:',模式'r'at 0x10028e0c0>)。有没有一种方法可以专门且轻松地更改这两个参数的输出格式以获得像“默认:STDIN”或“默认:STDOUT”之类的东西?
谢谢
import sys
import argparse
parser = argparse.ArgumentParser(prog='PROG',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('--infile',
'-i',
metavar='File',
help='The input file/stream.',
default=sys.stdin,
type=argparse.FileType('r'),
required=False)
parser.add_argument('--outfile',
'-o',
metavar='File',
help='The output file/stream.',
default=sys.stdout,
type=argparse.FileType('r'),
required=False)
parser.add_argument('--whatever-arg',
'-w',
type=str,
default='any',
help='Change something',
required=False)
args = parser.parse_args()
parser.print_help()
这使:
usage: PROG [-h] [--infile File] [--outfile File]
[--whatever-arg WHATEVER_ARG]
optional arguments:
-h, --help show this help message and exit
--infile File, -i File
The input file/stream. (default: <open file '<stdin>',
mode 'r' at 0x10028e0c0>)
--outfile File, -o File
The output file/stream. (default: <open file
'<stdout>', mode 'w' at 0x10028e150>)
--whatever-arg WHATEVER_ARG, -w WHATEVER_ARG
Change something (default: any)