【发布时间】:2021-11-15 05:21:49
【问题描述】:
我的 python 脚本需要一个 str 类型的参数。
我正在使用来自argparse 的ArgumentParser 类。
我想传入一个中间包含“$”字符的字符串,例如"file$102_a.txt",但是当传递给脚本时,参数存储为"file",切断了 $102_a。
有什么方法可以让argparse 适应这种情况吗?
运行 macOS,python v3.7.6
感谢您的帮助。
【问题讨论】:
-
你是如何运行脚本的?这可能是你的 shell 做的,而不是 Python 中的任何东西。您确定参数存储为
"file"而不是"file.txt"? -
shell 实际上应该只将
$1扩展为空字符串;102_a不是有效标识符,多位位置参数需要大括号来分隔名称,即${102}。 -
@chepner 在 zsh 上,
echo "file$102_a.txt"产生file_a.txt,在鱼壳中,它产生file.txt -
@smac89 是的,这是
zsh的非标准功能。 POSIX 要求多位参数用大括号括起来。 (虽然我认为zsh这样做是完全合理的,而且 POSIX 要求可能更多地源于历史先例和现有行为。) -
zsh是一个在您的终端中运行 的 shell,无论您使用的是终端还是 iTerm。