使用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列表并以这种方式处理它们,但是我希望有一个更优雅的解决方案。有小费吗?


沧海一幻觉
浏览 295回答 2
2回答

翻阅古今

在将它们传递给argparse之前,您可以按照简单.replace(',',', ')或.replace(',',',=')所有arg的方式进行操作。我认为其中之一应该可以解决问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python