【发布时间】:2021-04-16 19:59:43
【问题描述】:
假设我有一个输入文件选项和一个输出文件选项。如何创建结合两者的选项?例如:
$ ./my_script.py -i input.txt -o output.txt
可以合并为:
$ ./my_script.py --io input_output.txt
你可能会说我可以使用-io 来组合这两个选项,但-io filename 是-i -o filename 的快捷方式,而不是-i filename -o filename。
我认为可以将dest=('input', 'output') 添加到我的.add_argument() 调用中,但这引发了dest 必须是字符串的错误。
我尝试添加一个互斥组,一侧为--io,另一侧为一组-i 和-o,但-i 和-o 的帮助文本没有显示更多当程序使用--help 运行时:
usage: myscript.py [-h] [--io] [-i INPUT] [-o OUTPUT]
optional arguments:
-h, --help show this help message and exit
--io Use file as both input and output
此外,互斥部分似乎不起作用。我仍然可以使用--io 和单独的-i 和-o 选项调用脚本,并且不会引发错误。
这是我的骨架代码:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-i", "--input", help="Input file")
parser.add_argument("-o", "--output", help="Output file")
parser.parse_args()
带有组的代码:
import argparse
parser = argparse.ArgumentParser()
exclusive = parser.add_mutually_exclusive_group()
exclusive.add_argument("--io", help="Input and Output")
sub = exclusive.add_argument_group()
sub.add_argument("-i", "--input", help="Input file")
sub.add_argument("-o", "--output", help="Output file")
args = parser.parse_args()
if args.io:
in_file = out_file = args.io
else:
in_file = args.input
out_file = args.output
【问题讨论】: