使用argparse传递以减号( - )开头的参数值

时间:2017-11-21 08:28:25

标签: python python-3.x command-line command-line-arguments argparse

我正在做一个命令行实用程序,它可以接收一个以减号或加号开头的参数,例如 -gtest + gtest 问题是python3不接受这个:

这是重现此问题的最小代码: import argparse

if (__name__== "__main__"):
    parser = argparse.ArgumentParser()
    parser.add_argument('-s', '--string', action='store',
                        help='String value')
    p = parser.parse_args()
    if p.string:
        print("pass value:", p.string)

我尝试将其调用为:

./example.py -s -gtest
./example.py -s "-gtest"
./example.py -s \-gtest

总是得到下一个错误:

usage: example.py [-h] [-s STRING]
example.py: error: argument -s/--string: expected one argument

所以,我的问题是如何使用argparse

传递一个以减号开头的参数

1 个答案:

答案 0 :(得分:1)

您可以使用以下命令运行它:

python example.py -s-gtest
python example.py -s+gtest

所以,不要放任何空间,也不要以任何特殊的方式逃避它。