Python argparse 的好奇心

问题描述 投票:0回答:1

给出以下代码:

# 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 '
(注意添加的尾随空格)。

发生什么事了?

python argparse
1个回答
0
投票

这个程序可以帮助您更多地了解正在发生的事情:

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

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.