我试图在Python中使用 docopt
模块来解析脚本的命令行参数 . 可以直接调用此脚本,也可以通过使用PyInstaller构建的.exe调用此脚本 . 我想在使用部分中使用程序的实际名称,这与程序的调用方式有所不同(请注意,此处有许多相互排斥的选项,我已经省略了):
> py script.py
Usage:
script.py -foo <foo>
script.py -bar <bar>
...
> dist/script.exe
Usage:
dist/script.exe -foo <foo>
dist/script.exe -bar <bar>
...
我可以通过在传递给docopt的字符串上使用 .format()
来做到这一点,但这会变得很难看,并且无法将选项指定为模块docstring:
doc = """
Usage:
{} -foo <foo>
{} -bar <bar>
...
""".format(sys.argv[0], sys.argv[0])
args = docopt(doc, ...)
有没有更好的办法?
1 回答
正如您在当前主分支中的inspecting the code所看到的那样,docopt没有太多功能来获取它解析和显示的字符串 .
然而,DocoptExit exception it raises实际上是显示用法消息,所以你可以猴子补丁,如下面的
test.py
所示样品运行