如何在 python argparse 中获取字符串参数的“符号

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

我想用Python编写一个程序,获取未指定数量和类型的参数。我可以使用

argparse
执行此操作,如下所示:

parser = argparse.ArgumentParser()
parser.add_argument('args', help='Help', nargs=argparse.REMAINDER)

但是这段代码的问题是,当我给它这些参数时,例如:

"Hello" -s "5" 98.5 --file True
,它给我这个输出:
['Hello', '-s', '5', '98.5', '--file', 'True']
。它将所有值转换为字符串,并删除字符串值的“符号。我需要这个输出:
['"Hello"', '-s', '"5"', '98.5', '--file', 'True']
,将所有值连接在一起并获得与用户输入的输入完全相同的字符串:
'"Hello" -s "5" 98.5 --file True'

我尝试使用

shlex.join
shlex.quote
,但是这个库并不总是能正常工作,如果用户输入了一个字符串形式的数字,则无法用此方法识别,如上面的示例。
sys.argv
的工作方式类似,但不接受 " 符号。 如果是使用
argparse
以外的方法,请告诉我。

python argparse
1个回答
1
投票

这不是 Python 问题。那就是壳的问题了Shell 在将其传递给 Python 之前“删除”引号。您有两个选择:

./script.py '"Hello"' -s '"5"' 98.5 --file True

./script.py \"Hello\" -s \"5\" 98.5 --file True

Python 方面你无能为力。

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