"zsh: unknown file attribute: 0"命令行上传递 Python 元组



我在Mac上使用zsh(5.8(从终端调用Python(3.8(脚本,导致标题中出现错误消息。我找到了解决这个问题的方法(尽管不是很优雅(,但我想了解出了什么问题。

我的Python文件test.py:

import argparse
from ast import literal_eval
parser = argparse.ArgumentParser(description="test")
parser.add_argument("--test", default="", type=str, help="test")
args = parser.parse_args()
print(literal_eval(args.test))

使用python test.py --test (0.4,0.3)从命令行调用此脚本会导致此错误消息zsh: unknown file attribute: 0

这是什么意思


关于literal_eval:的说明

literal_eval获取类似"(0.3,0.4)"的字符串,并将其计算为元组s.t.

a = literal_eval("(0.3,0.4)")
type(a)
<class 'tuple'>

最好的解决方法是将字符串放在引号中,因此您可以这样称呼它:

python test.py --test '(0.4,0.3)'

错误的原因是zsh试图使用globbing magic将(0.4,0.3)扩展为文件名,但当然,由于您不打算使用它,因此语法不太正确,因此出现了错误。字符串只需使用引号'"

最新更新