标签: argparse

Python 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)

反正有没有覆盖这个?

python optparse argparse

178
推荐指数
3
解决办法
5万
查看次数

使用argparse需要两个参数中的任何一个

鉴于:

import argparse

pa = argparse.ArgumentParser()
pa.add_argument('--foo')
pa.add_argument('--bar')

print pa.parse_args('--foo 1'.split())
Run Code Online (Sandbox Code Playgroud)

我如何能

  • 使"富,酒吧"强制至少一个:--foo x,--bar y并且--foo x --bar y是精
  • 最多制作一个"foo,bar"强制性:--foo x或者--bar y很好,--foo x --bar y不是

python argparse

166
推荐指数
2
解决办法
4万
查看次数

Python argparse:默认值或指定值

我想有一个可选参数,如果只有标志存在而没有指定值,则默认为一个值,但是如果用户指定了值,则存储用户指定的值而不是默认值.是否已有针对此的行动?

一个例子:

python script.py --example
# args.example would equal a default value of 1
python script.py --example 2
# args.example would equal a default value of 2
Run Code Online (Sandbox Code Playgroud)

我可以创建一个动作,但想知道是否有现成的方法来执行此操作.

python default-value argparse

150
推荐指数
3
解决办法
11万
查看次数

argparse模块如何添加没有任何参数的选项?

我用了创建了一个脚本argparse.

脚本需要将配置文件名作为选项,用户可以指定是否需要完全继续脚本或仅模拟脚本.

要通过的args:./script -f config_file -s./script -f config_file.

对于-f config_file部分是可以的,但是它一直在问我-s的参数是哪个是选项,不应该是任何参数.

我试过这个:

parser = argparse.ArgumentParser()
parser.add_argument('-f', '--file')
#parser.add_argument('-s', '--simulate', nargs = '0')
args = parser.parse_args()
if args.file:
    config_file = args.file
if args.set_in_prod:
        simulate = True
else:
    pass
Run Code Online (Sandbox Code Playgroud)

出现以下错误:

File "/usr/local/lib/python2.6/dist-packages/argparse.py", line 2169, in _get_nargs_pattern
nargs_pattern = '(-*%s-*)' % '-*'.join('A' * nargs)
TypeError: can't multiply sequence by non-int of type 'str'
Run Code Online (Sandbox Code Playgroud)

与错误相同''而不是0.

python argparse

146
推荐指数
2
解决办法
8万
查看次数

argparse:确定使用了哪个subparser

我认为这一定很容易,但我不明白.

假设我有以下arparse解析器:

import argparse

parser = argparse.ArgumentParser( version='pyargparsetest 1.0' )
subparsers = parser.add_subparsers(help='commands')

# all
all_parser = subparsers.add_parser('all', help='process all apps')

# app
app_parser = subparsers.add_parser('app', help='process a single app')
app_parser.add_argument('appname', action='store', help='name of app to process')
Run Code Online (Sandbox Code Playgroud)

我怎样才能确定使用了哪个subparser?电话:

print parser.parse_args(["all"])
Run Code Online (Sandbox Code Playgroud)

给我一个空命名空间:

Namespace()
Run Code Online (Sandbox Code Playgroud)

python argparse

138
推荐指数
2
解决办法
4万
查看次数

你如何编写python模块的argparse部分的测试?

我有一个使用argparse库的Python模块.如何为代码库的该部分编写测试?

python unit-testing argparse

137
推荐指数
7
解决办法
4万
查看次数

在Python中,使用argparse,只允许正整数

标题几乎总结了我想要发生的事情.

这就是我所拥有的,虽然程序没有在非正整数上爆炸,但我希望用户被告知非正整数基本上是无意义的.

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-g", "--games", type=int, default=162,
                    help="The number of games to simulate")
args = parser.parse_args()
Run Code Online (Sandbox Code Playgroud)

并输出:

python simulate_many.py -g 20
Setting up...
Playing games...
....................
Run Code Online (Sandbox Code Playgroud)

输出带否定:

python simulate_many.py -g -2
Setting up...
Playing games...
Run Code Online (Sandbox Code Playgroud)

现在,显然我可以添加一个if来确定if args.games是否定的,但我很好奇是否有办法将它陷入argparse水平,以便利用自动使用打印.

理想情况下,它会打印类似于此的内容:

python simulate_many.py -g a
usage: simulate_many.py [-h] [-g GAMES] [-d] [-l LEAGUE]
simulate_many.py: error: argument -g/--games: invalid int value: 'a'
Run Code Online (Sandbox Code Playgroud)

像这样:

python simulate_many.py -g -2
usage: simulate_many.py [-h] [-g GAMES] [-d] [-l LEAGUE]
simulate_many.py: …
Run Code Online (Sandbox Code Playgroud)

python argparse

134
推荐指数
6
解决办法
5万
查看次数

在带有破折号的argparse中有选项

我想在argparse模块中有一些选项,--pm-export但是当我尝试使用它时,args.pm-export我得到的错误是没有属性pm.我该如何解决这个问题?是否可以使用-命令行选项?

python argparse

122
推荐指数
3
解决办法
4万
查看次数

使用argparse获取selected子命令

当我使用python argparse的子命令时,我可以得到所选的参数.

parser = argparse.ArgumentParser()
parser.add_argument('-g', '--global')
subparsers = parser.add_subparsers()   
foo_parser = subparsers.add_parser('foo')
foo_parser.add_argument('-c', '--count')
bar_parser = subparsers.add_parser('bar')
args = parser.parse_args(['-g, 'xyz', 'foo', '--count', '42'])
# args => Namespace(global='xyz', count='42')
Run Code Online (Sandbox Code Playgroud)

所以args不包含'foo'.sys.argv[1]由于可能的全局参数,简单编写不起作用.如何获取子命令本身?

python command-line argparse

116
推荐指数
2
解决办法
4万
查看次数

使用Python argparse创建隐藏参数

是否可以在python中添加一个Argument argparse.ArgumentParser而不显示在usage或help(script.py --help)中?

python argparse

106
推荐指数
1
解决办法
2万
查看次数