比方說,我有一個輸入文件選項和一個輸出文件選項。我如何創建一個結合這兩者的選項?例如:Argparse快捷選項用於組合其他選項
$ ./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
這太糟糕了,沒有更容易的事情。我決定使用與此類似的東西,除了我使用的是比AssertionError更友好的用戶界面。 – zondo