【发布时间】:2022-01-02 10:41:58
【问题描述】:
我正在编写一个 python 脚本,我想在其中传递一个元组/列表列表。我尝试使用 argparse 模块,但找不到将元组列表作为参数传递的方法(即[(1,2),(3,4),(5,6)])。
到目前为止我已经尝试过:
- 我知道我可以使用
nargs='+',但这只能让我传入一个值列表。 - 我试过
parser.add_argument('--pairs', type=tuple, nargs='+'),但我得到了
$ python test.py --pairs (1,2) (2,4)
-bash: syntax error near unexpected token `('
有没有人有任何使用 argparse 模块(或任何其他模块)的示例?
这是脚本。没什么特别的,只是想传入元组列表并确保我可以正确打印和访问元素:
import argparse
def test(args):
print("----")
print(args.pairs)
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--pairs', type=tuple, nargs='+')
args = parser.parse_args()
print("===args===")
for arg in vars(args):
print(arg, getattr(args, arg))
test(args)
【问题讨论】:
-
你能显示你的函数的代码吗?
-
@anarchy 我刚刚更新了它以包含代码。
-
"(" 和 ")" 是 bash 中的特殊字符,用于其他用途。您需要引用它们(就像您在回答中所做的那样)。即 python test.py --pairs "(1,2) (2,4)";然后将字符串转换为元组。