【发布时间】:2021-09-24 17:16:36
【问题描述】:
我正在尝试为 ArgParse 创建一个更具吸引力的菜单,主要是在显示帮助菜单时保持一致的格式。我了解如何使用各种属性来制作需要或不需要的东西,但不确定如何格式化文本以使它们保持一致。
我当前的相关代码如下所示
import argparse
parser = argparse.ArgumentParser(prog='myprogram', description='Select which files to parser and where to save them.')
parser.add_argument('-f', metavar='--file', type=str, help='select a single file to process', required=False)
parser.add_argument('-d', metavar='--dir', type=str, help='filepath directory', required=False)
args = parser.parse_args()
我想做的只是在 -f 和 --file 之间添加一个逗号以及任何其他命令。我知道这是相当小的细节,但我能说什么我喜欢一致地格式化。
我在我的机器上运行 Python v3.8.2 和 Argparse v1.4.0
【问题讨论】:
-
从
add_argument呼叫中删除metavar=。只保留'--file'! -
一个更常见的参数定义是:
parser.add_argument('-f', '--file', help='select a single file to process')。然后用户可以使用-f filename或--file filename。您将--file用于元变量会令人困惑。 -
默认的帮助行是'-f FILE, --file FILE select ...'。重复的“文件”可以用
metavar替换或缩短,但不能完全消除。已经有人要求变体,尤其是更紧凑的版本,但这需要继承 HelpFormatter 并修改方法。如果您不喜欢格式化细节,则允许甚至鼓励调整格式化程序;但不要期望有很多牵手。 -
@hpaulj 好的,这是有道理的!似乎有很多争论,如果有的话,知道何时使用它们是如此令人困惑。你能和 HelpFormatter 多谈谈吗?
标签: python-3.x command-line-arguments argparse