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
。