jvm*_*jvm 18 python optional-arguments argparse
我想有以下语法:
python utility.py file1 FILE1 file2 FILE2
Run Code Online (Sandbox Code Playgroud)
其中file1和file2是可选参数.使用这种语法很简单:
python utility.py --file1 FILE1 --file2 FILE2
Run Code Online (Sandbox Code Playgroud)
运用
parser.add_argument('--file1',type=file)
parser.add_argument('--file2',type=file)
Run Code Online (Sandbox Code Playgroud)
但是,如果我删除破折号,argparse开始将其解释为位置而非可选参数......
换句话说,是否可以专门告诉argparse一个参数是可选的还是位置的,这样我可以有没有破折号的可选参数?
没有办法argparse为你做这件事.但是,您可以argparse接受任意数量的位置参数:
parser.add_argument('FILES',nargs='*')
options=parser.parse_args()
file1,optional_files=options.FILES[0],options.FILES[1:]
Run Code Online (Sandbox Code Playgroud)
当然,您可能需要添加一些检查以确保至少提供了1个文件,等等.
编辑
我仍然相信你想要的这里不是100%,但如果file1和file2是文字字符串,就可以解决,通过预处理一点点sys.argv.当然,这仍然会奇怪地格式化您的帮助信息,但您总是可以添加一个epilog来解释任何一种形式都可以:
import argparse
import sys
mangle_args=('file1','file2')
arguments=['--'+arg if arg in mangle_args else arg for arg in sys.argv[1:]]
parser=argparse.ArgumentParser()
parser.add_argument('--file1')
parser.add_argument('--file2')
options=parser.parse_args(arguments)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6489 次 |
| 最近记录: |