“zsh:未知文件属性:0”在命令行上传递 Python 元组

Car*_*sen 2 python zsh

我使用 zsh (5.8) 从 Mac 上的终端调用 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))
Run Code Online (Sandbox Code Playgroud)

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

这意味着什么?


关于 的解释literal_eval

literal_eval接受一个字符串 like"(0.3,0.4)"并将其计算为元组 st

a = literal_eval("(0.3,0.4)")
type(a)
<class 'tuple'>
Run Code Online (Sandbox Code Playgroud)

Ale*_*nov 5

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

python test.py --test '(0.4,0.3)'
Run Code Online (Sandbox Code Playgroud)

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