【发布时间】:2016-03-26 21:20:19
【问题描述】:
我正在为我正在编写的 python 脚本使用 argparse。该脚本的目的是处理存储表格数据的大型 ascii 文件。该脚本只是为我编写的一个类提供了一个方便的前端,它允许对表格数据进行任意数量的即时剪切。在类中,用户可以传入一个变量名关键字参数,其中包含一个绑定到变量的二元素元组。元组定义了名称对应于变量名关键字的任何列的下限和上限。例如:
reader = AsciiFileReducer(fname, mass = (100, float("inf")), spin = (0.5, 1))
这个 reader 实例将忽略输入 fname 的所有行,除了那些 mass > 100 和 0.5 。输入 fname 可能有许多其他列,但只有 mass 和 spin 会在它们上放置剪切。
我希望我正在编写的脚本保留此功能,但我不知道如何允许使用 argparse.add_argument 添加具有变量名的参数。我的类允许任意数量的可选参数,每个参数都有未指定的名称,其中为名称选择的字符串本身是有意义的。 python 的 **kwargs 特性使这成为可能。 argparse 可以吗?
【问题讨论】:
-
这取决于您希望如何指定命令行参数。那会是 `-c "mass > 100" -c "0.5
-
经过更多的挖掘,我想我可能已经找到了一种使用 nargs 组合并允许相同可选参数多次出现的 hack-y 解决方法。我想如果我允许可选参数
-row_cut_min和-row_cut_max,并设置nargs=2,那么第一个参数可以是列的字符串名称,第二个参数可以是cut。我认为这给出了我想要的行为,不是吗? -
实际上,我认为这不允许我想要的,因为它不允许-row_cut_min 或-row_cut_max 的多次出现。所以我又回到了绘图板上。