给出以下代码:
# parseargs.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("s")
args = parser.parse_args()
当我运行它时,一切都会按预期工作除非传递的字符串以破折号开头。显然,
python parseargs -string
不起作用,因为 argparse
认为它正在处理找不到的开关,但 python parseargs '-string'
也没有在我期望的引号中(无论它们是单引号还是双引号) ,顺便说一句)应该避免这一点。最后,这确实有效python parseargs '-string '
(注意添加的尾随空格)。
发生什么事了?
这个程序可以帮助您更多地了解正在发生的事情:
import argparse
import sys
print(sys.argv)
parser = argparse.ArgumentParser()
parser.add_argument("s")
args = parser.parse_args()
print(args.s)
用不同的引号进行实验...您的具体问题是
-string
被 argparse 解释为 -s -t -r -i -n -g
选项集。为了防止这种情况发生,请按照 VPfB 在他的 comment 中正确所说的那样,在前面添加一个选项符号结束。有关 POSIX 标准选项符号结束的更多信息在此 answer。