【发布时间】:2017-09-10 00:06:29
【问题描述】:
我正在尝试使用 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, ...)
有没有更好的方法?
【问题讨论】: