Python 是否有方法输入以';开头的字符串-';是否使用argparse模块作为命令行参数签名?(不使用标志)

Python 是否有方法输入以';开头的字符串-';是否使用argparse模块作为命令行参数签名?(不使用标志),python,command-line,command-line-interface,argparse,Python,Command Line,Command Line Interface,Argparse,所以我有这个密码 # driver code if __name__ == "__main__": # parse command line arguments parser = argparse.ArgumentParser() parser.add_argument("InputDataFile", help="Enter the name of CSV file with .csv extention",type=str) parser.add_

所以我有这个密码

# driver code    
if __name__ == "__main__":

    # parse command line arguments 
    parser = argparse.ArgumentParser()
    parser.add_argument("InputDataFile", help="Enter the name of CSV file with .csv extention",type=str)
    parser.add_argument("Weights", nargs=1, help="Enter the weight vector comma separated" ,type=str)
    parser.add_argument("Impacts", nargs=1, help="Enter the impact vector comma separated",type=str)
    args = parser.parse_args()


    main(vars(args))
我想输入一个字符串,比如

python top2.py data.csv "0,1,1,1" "-,+,+,+"
但我发现输入错误:

usage: top2.py [-h] InputDataFile Weights Impacts
top2.py: error: the following arguments are required: Impacts
如果输入字符串的第一个字符是“+”号,并且中间有一个“-”(如“+,-,+”),则代码可以正常工作。但是如果第一个字符是“-”,我会得到上面的错误。 我猜测的是,解析器将“-”连字符作为另一个标志及其参数的开头

我在网上找不到相关资料,请帮忙

以上述方式输入字符串非常重要,因此不能更改输入格式


编辑:如果我将字符串输入为“-、+、+、+、+”或在字符串中的任意位置添加空格,则代码运行良好

您只需在命令行中添加一个单独的
--
,以指示“选项到此结束”,如下所示:

python top2.py -- data.csv "0,1,1,1" "-,+,+,+"

--
之后的所有内容都被解析为一个位置参数,而不是一个选项。

我暂时找到了解决方法

argparse为我们提供了自定义前缀字符的工具。 我们可以做到

my_parser = argparse.ArgumentParser(prefix_chars='/')
现在可以使用“/”访问所有标志/可选参数,而不是默认的连字符符号。 例如,要获得帮助,请使用以下命令

python top2.py /h
部分输出:

optional arguments:
  /h, //help     show this help message and exit

如果您的目标平台完全是Windows(或者VMS,如果我的内存正常的话),这可能是可以接受的,但在类似Unix的平台上会非常混乱。如果它这么简单,没有使用
argarse
功能的其他参数,您可能只想直接解析
sys.argv