jdb*_*org 178 python optparse argparse
Optparse,旧版本只是忽略了所有无法识别的参数并继续.在大多数情况下,这并不理想,并且在argparse中已更改.但是在某些情况下,您希望忽略任何无法识别的参数并解析您指定的参数.
例如:
parser = argparse.ArgumentParser()
parser.add_argument('--foo', dest="foo")
parser.parse_args()
$python myscript.py --foo 1 --bar 2
error: unrecognized arguments: --bar
Run Code Online (Sandbox Code Playgroud)
反正有没有覆盖这个?
unu*_*tbu 306
更换
args = parser.parse_args()
Run Code Online (Sandbox Code Playgroud)
同
args, unknown = parser.parse_known_args()
Run Code Online (Sandbox Code Playgroud)
例如,
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--foo')
args, unknown = parser.parse_known_args(['--foo', 'BAR', 'spam'])
print(args)
# Namespace(foo='BAR')
print(unknown)
# ['spam']
Run Code Online (Sandbox Code Playgroud)
lic*_*nbo 19
parser.add_argument('args', nargs=argparse.REMAINDER)
如果要使用它们,可以将其余部分放入新参数中.
实际上argparse仍然"忽略" _unrecognized_args
.只要这些"无法识别"的参数不使用默认前缀,您就不会听到解析器的任何抱怨.
使用@ anutbu的配置但使用标准parse.parse_args()
,如果我们使用以下参数执行我们的程序.
$ program --foo BAR a b +cd e
Run Code Online (Sandbox Code Playgroud)
我们将使用此Namespaced数据集合.
Namespace(_unrecognized_args=['a', 'b', '+cd', 'e'], foo='BAR')
Run Code Online (Sandbox Code Playgroud)
如果我们想默认前缀-
忽略我们可以改变ArgumentParser和决定,我们将使用+
我们的"认可"参数,而不是.
parser = argparse.ArgumentParser(prefix_chars='+')
parser.add_argument('+cd')
Run Code Online (Sandbox Code Playgroud)
将产生相同的命令
Namespace(_unrecognized_args=['--foo', 'BAR', 'a', 'b'], cd='e')
Run Code Online (Sandbox Code Playgroud)
把它放在管道中吸烟=)
的nJoy!
归档时间: |
|
查看次数: |
48960 次 |
最近记录: |