我正在编写一个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列表并以这种方式处理它们,但我希望有一个更优雅的解决方案。有什么提示吗?
答案 0 :(得分:0)
在将所有args传递给argparse之前,你可以在所有args上执行简单的.replace(',',', ')
或.replace(',',',=')
。我认为其中一个应该可以解决问题。
答案 1 :(得分:0)
您应该可以使用CustomAction解决此问题。 http://pymotw.com/2/argparse/有一个关于如何做到这一点的很好的例子。