【发布时间】:2018-07-23 08:33:38
【问题描述】:
如果我正确理解 Argparse,位置参数是用户可以指定的必需参数。我需要使用 argparse 创建一个位置参数,用户可以在其中指定某种类型的参数,如果他/她提出 -h 选项则显示该参数。我试过使用 add_argument_group 但它只是在你调出 -h 选项时只显示一个带有其他参数描述的标题。
def Main():
parser = argparse.ArgumentParser(description = __doc__, formatter_class = argparse.RawDescriptionHelpFormatter)
parser.add_argument("input_directory",help = "The input directory where all of the files reside in")
sub_parser = parser.add_argument_group('File Type')
sub_parser.add_argument(".txt",help = "The input file is a .txt file")
sub_parser.add_argument(".n12",help = "The input file is a .n12 file")
sub_parser.add_argument(".csv",help = "The input file is a .csv file")
parser.parse_args()
if __name__ == "__main__":
Main()
所以当我运行脚本时,我应该指定以便运行脚本。如果我选择 .txt、.n12 或 .csv 作为我的参数,那么脚本应该运行。但是,如果我没有从列出的这 3 个选项中指定文件类型,那么脚本将不会运行。
我是否缺少可以为位置参数指定多个选项的 argparse 函数?
【问题讨论】:
-
您在询问某种枚举?你能展示一些命令应该是什么样子的例子吗?
-
您的代码定义了 4 个位置参数,因此需要来自用户的 4 个字符串。正如您所注意到的,
argument_group只会影响帮助显示;它在解析过程中什么都不做。我建议您尝试使用带有choices=['txt', 'n12', 'csv']参数的标记参数。