如何在macOS终端无需引号或反斜杠,通过argparse识别标点
解决macOS zsh终端中argparse捕获含特殊字符文本的问题
你的问题根源在于macOS默认使用的zsh终端会先解析命令中的特殊字符(比如?是通配符、()是子shell语法),再把参数传给Python脚本,而Windows的cmd不会做这些解析,直接传递所有参数。以下是几种解决方法:
使用单引号包裹参数:单引号会让zsh完全忽略内部的特殊字符,原样传递给脚本,这是最稳妥的方式:
bubble.py 'hello?' bubble.py 'hello :)' bubble.py 'hello world!'如果需要传递多个包含特殊字符的独立参数,每个参数单独用单引号包裹即可:
bubble.py 'hello?' 'how are you?'使用双引号包裹参数:双引号也能处理大部分特殊字符(比如
?、()),但如果参数里包含$、反引号等字符,双引号仍会解析它们,适合无这类字符的场景:bubble.py "hello?" bubble.py "hello :)"转义单个特殊字符:在每个特殊字符前添加反斜杠
\,告诉zsh不要解析该字符:bubble.py hello\? bubble.py hello :\)这种方式适合仅含少量特殊字符的参数,多个特殊字符时不如引号方便。
内容的提问来源于stack exchange,提问作者Jobo Fernandez
相关产品推荐
相关产品推荐

