【发布时间】:2019-05-22 05:12:45
【问题描述】:
所以我有一个这样的解析器:
parser.add_argument('-f', '--foo', metavar='foo', type=ast.literal_eval, default=[], help="Foo")
如果用户愿意,我需要让他们输入多个值:
$ python3 foo.py -f [0x01, 0x56, 0xff] -a blah -b blah ...
但每当我尝试列表中的多个值时,我都会收到 EOF 错误:
...
File "<unknown>", line 1
[0x01,
^
SyntaxError: unexpected EOF while parsing
设置解析器以处理此类问题的正确方法是什么?
【问题讨论】:
-
你试过
python3 foo.py -f "[0x01, 0x56, 0xff]" -a blah -b blah ..吗? -
shell 在空格处分割参数。如果您不想将它们视为分隔符,请引用您的空格。
-
@PatrickArtner 最好使用正确的 argparse 选项
-
@Chris_Rands 这里的问题是外壳在空格处分裂 - 我确实看得更远 - 你的欺骗更好。
-
查看
sys.argv以了解解析器必须处理的内容。它是由 shell 拆分的字符串列表。您的type函数一次处理一个字符串。
标签: python linux list command-line argparse