使用逗号使用python' s argparse处理选项

时间:2013-06-26 19:02:30

标签: python argparse

我正在编写一个python脚本,作为GCC的包装器。 GCC采用的大多数选项都可以直接处理argparse,但我正在努力使用“-Wl,option”选项。我希望它存储逗号之后的所有内容,所以我尝试了以下内容:

parser = argparse.ArgumentParser()
parser.add_argument("-Wl,", help="Option to pass to linker.")
known, unknown = parser.parse_known_args()
print(known)
print(unknown)

但是,如果我按如下方式运行脚本:

python foo.py -Wl,foo

我得到以下输出:

Namespace(E=False, S=False, Wl,=None, c=False, optimization=None, shared=False, target=None)
['-Wl,foo']

表示它无法识别-Wl选项。

我可以将add_argument行更改为:

parser.add_argument("-W", help="Option to pass to linker.")

这有效,在W选项中存储“l,foo”,但是GCC使用-W作为警告标志,我想保留那些与-Wl选项分开的。

我可以浏览未知args列表并以这种方式处理它们,但我希望有一个更优雅的解决方案。有什么提示吗?

2 个答案:

答案 0 :(得分:0)

在将所有args传递给argparse之前,你可以在所有args上执行简单的.replace(',',', ').replace(',',',=')。我认为其中一个应该可以解决问题。

答案 1 :(得分:0)

您应该可以使用CustomAction解决此问题。 http://pymotw.com/2/argparse/有一个关于如何做到这一点的很好的例子。