我希望使用Python --foobar
创建一个参数argparse
,这样无论何时出现此参数,程序都会打印一个特定的字符串并退出。我不想消耗任何其他参数,我不想检查其他参数,没有。
我必须以某种方式调用add_argument
,然后或许,从parse_args()
获取一些信息并根据它打印我的字符串。
但即使我之前成功使用过argparse
,我也很惊讶地发现我遇到了这个问题。
例如,nargs
值似乎没有达到我想要的效果,action
值似乎都不合适。他们搞砸了其他论点,一旦看到这个论点我就不理睬。
怎么做?
答案 0 :(得分:1)
使用自定义action=
参数:
import argparse
class FoobarAction(argparse.Action):
def __init__(self, option_strings, dest, **kw):
self.message = kw.pop('message', 'Goodbye!')
argparse.Action.__init__(self, option_strings, dest, **kw)
self.nargs = 0
def __call__(self, parser, *args, **kw):
print self.message
parser.exit()
p = argparse.ArgumentParser()
p.add_argument('--ip', nargs=1, help='IP Address')
p.add_argument('--foobar',
action=FoobarAction,
help='Abort!')
p.add_argument('--version',
action=FoobarAction,
help='print the version number and exit!',
message='1.2.3')
args = p.parse_args()
print args
参考:https://docs.python.org/2.7/library/argparse.html#action-classes
看起来已经有action=
完全符合FoobarAction
所做的事情。 action='version'
是要走的路:
import argparse
p = argparse.ArgumentParser()
p.add_argument('--foobar',
action='version',
version='Goodbye!',
help='Abort!')
args = p.parse_args()
print args
答案 1 :(得分:0)
我只是想在这里发帖,如果它有帮助那么棒!
import argparse
parser = argparse.ArgumentParser(description='')
parser.add_argument('-foobar', '--foobar', help='Description for foobar argument',
required=False)
args = vars(parser.parse_args())
if args['foobar'] == 'yes':
foobar()
用法:
python myscrip.py -foobar yes
答案 2 :(得分:0)
使用action='store_true'
(see the docs)。
<强> arg_test.py:强>
import argparse
import sys
p = argparse.ArgumentParser()
p.add_argument('--foobar', action='store_true')
args = p.parse_args()
if args.foobar:
print "foobar"
sys.exit()
<强>用法:强>
python arg_test.py --foobar
<强>结果:强>
foobar