使用 Python Argparse 时在可选参数中使用“-”时出现问题
Problem using '-' inside an optional argument when using Python Argparse
我正在解析参数输入:
python parser_test.py --p "-999,-99;-9"
我收到这个错误:
parser_test.py: error: argument --p: expected one argument
在可选参数中包含“-”是否有特殊原因
"-999,-99;-9"
即使在双引号内也会抛出错误?我需要能够包含“-”符号。
代码如下:
import argparse
def main():
parser = argparse.ArgumentParser(description='Input command line arguments for the averaging program')
parser.add_argument('--p', help='input the missing data filler as an integer')
args = parser.parse_args()
if __name__=='__main__':
main()
引用不会改变 argparse
对待 -
的方式;它们的唯一目的是防止 shell 将 ;
视为命令终止符。
argparse
首先查看 所有 参数并确定哪些 可能 是选项,而不管实际选项是什么通过检查哪些以 -
开头来定义。对于可能为负数的事物(如 -999
),它是一个例外,但前提是没有定义的看起来像数字的选项。
解决方案是防止 argparse
将 -999,-99;-9
视为单独的参数。使用 --name=value
形式使其成为包含 -p
的参数的 部分 。
python parser_test.py --p="-999,-99;-9"
您还可以使用 "--p=-999,-99;-9"
或 --p=-999,-99\;-9
,以及许多其他编写参数的可能性,这些参数将导致 shell 将您的命令行解析为两个单独的命令,python parser_test.py --p-999,-99
和 -9
.
我正在解析参数输入:
python parser_test.py --p "-999,-99;-9"
我收到这个错误:
parser_test.py: error: argument --p: expected one argument
在可选参数中包含“-”是否有特殊原因
"-999,-99;-9"
即使在双引号内也会抛出错误?我需要能够包含“-”符号。
代码如下:
import argparse
def main():
parser = argparse.ArgumentParser(description='Input command line arguments for the averaging program')
parser.add_argument('--p', help='input the missing data filler as an integer')
args = parser.parse_args()
if __name__=='__main__':
main()
引用不会改变 argparse
对待 -
的方式;它们的唯一目的是防止 shell 将 ;
视为命令终止符。
argparse
首先查看 所有 参数并确定哪些 可能 是选项,而不管实际选项是什么通过检查哪些以 -
开头来定义。对于可能为负数的事物(如 -999
),它是一个例外,但前提是没有定义的看起来像数字的选项。
解决方案是防止 argparse
将 -999,-99;-9
视为单独的参数。使用 --name=value
形式使其成为包含 -p
的参数的 部分 。
python parser_test.py --p="-999,-99;-9"
您还可以使用 "--p=-999,-99;-9"
或 --p=-999,-99\;-9
,以及许多其他编写参数的可能性,这些参数将导致 shell 将您的命令行解析为两个单独的命令,python parser_test.py --p-999,-99
和 -9
.