相关疑难解决方法(0)

我希望Python argparse抛出异常而不是使用

我不认为这是可能的,但我想自己处理来自argparse的异常.

例如:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--foo', help='foo help', required=True)
try:
    args = parser.parse_args()
except:
    do_something()
Run Code Online (Sandbox Code Playgroud)

当我运行它:

$ myapp.py
usage: myapp --foo foo
myapp: error: argument --foo is required
Run Code Online (Sandbox Code Playgroud)

但我希望它落入例外.

python argparse

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

使我的python命令行程序与argparse交互

我正在尝试使我的python程序在命令行中交互,用户应该能够执行以下操作:

python myprogram.py --create
Run Code Online (Sandbox Code Playgroud)

然后

python myprogram.py --send
Run Code Online (Sandbox Code Playgroud)

这时的问题是程序每次都停止并重新启动,所以我丢失了我用第一个命令创建的变量和对象.

我这样使用argparse:

parser = argparse.ArgumentParser()
parser.add_argument('-c','--create' ,help='',action='store_true')
parser.add_argument('-s','--send',help='',action='store_true')
args = parser.parse_args()

if args.create:
    create()
elif args.send :
    send()
Run Code Online (Sandbox Code Playgroud)

我不想在命令之间停止程序,怎么做?

例如:https://coderwall.com/p/w78iva

python shell command-line command-line-arguments argparse

6
推荐指数
2
解决办法
5367
查看次数

在Python中使用argparse处理无效参数

argparse用来解析命令行参数,默认情况下,在接收到无效参数时,它会打印帮助消息并退出。当argparse收到无效参数时,是否可以自定义行为?

通常,我想捕获所有无效的参数并对其进行处理。我正在寻找类似的东西:

parser = argparse.ArgumentParser()
# add some arguments here
try:
    parser.parse_args()
except InvalidArgvsError, iae:
    print "handle this invalid argument '{arg}' my way!".format(arg=iae.get_arg())
Run Code Online (Sandbox Code Playgroud)

这样我就可以:

>> python example.py --invalid some_text
handle this invalid argument 'invalid' my way!
Run Code Online (Sandbox Code Playgroud)

python argparse

5
推荐指数
1
解决办法
5019
查看次数

使用unittest测试argparse-退出错误

要去关格雷格·哈斯在这个问题的答案,我试图让一个单元测试来检查当我通过它的一些ARGS不存在在该argparse是给相应的错误choices。但是,unittest使用以下try/except语句会产生误报。

另外,当我仅使用一条with assertRaises语句进行测试时,会argparse强制系统退出,并且程序不再执行任何其他测试。

我希望能够对此进行测试,但是鉴于argparse错误退出,也许这是多余的?

#!/usr/bin/env python3

import argparse
import unittest

class sweep_test_case(unittest.TestCase):
    """Tests that the merParse class works correctly"""

    def setUp(self):
        self.parser=argparse.ArgumentParser()
        self.parser.add_argument(
            "-c", "--color",
            type=str,
            choices=["yellow", "blue"],
            required=True)

    def test_required_unknown_TE(self):
        """Try to perform sweep on something that isn't an option.
        Should return an attribute error if it fails.
        This test incorrectly shows that the test passed, even though that must
        not be true."""
        args = …
Run Code Online (Sandbox Code Playgroud)

python unit-testing argparse python-3.x python-unittest

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