如何在执行时打印Python文件的文档string?
我有一个文档string的Python脚本。 当命令行参数的parsing不成功时,我想打印用户信息的文档string。
有没有办法做到这一点?
最小的例子
#!/usr/bin/env python """ Usage: script.py This describes the script. """ import sys if len(sys.argv) < 2: print("<here comes the docstring>")
文档string存储在模块的__doc__
全局中。
print(__doc__)
顺便说一句,这适用于任何模块: import sys; print(sys.__doc__)
import sys; print(sys.__doc__)
。 函数和类的Docstrings也在__doc__
属性中。
这是一个替代方法,它不会对脚本的文件名进行硬编码,而是使用sys.argv [0]来打印它。 使用%(scriptName)而不是%s提高了代码的可读性。
#!/usr/bin/env python """ Usage: %(scriptName)s This describes the script. """ import sys if len(sys.argv) < 2: print __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]} sys.exit(0)
参数parsing应始终使用argparse
完成。
您可以通过将__doc__
string传递给Argparse的description
参数来显示它:
#!/usr/bin/env python """ This describes the script. """ if __name__ == '__main__': from argparse import ArgumentParser parser = ArgumentParser(description=__doc__) # Add your arguments here parser.add_argument("-f", "--file", dest="myFilenameVariable", required=True, help="write report to FILE", metavar="FILE") args = parser.parse_args() print(args.myFilenameVariable)
如果你调用这个mysuperscript.py并执行它,你会得到:
$ ./mysuperscript.py --help usage: mysuperscript.py [-h] -f FILE This describes the script. optional arguments: -h, --help show this help message and exit -f FILE, --file FILE write report to FILE