如何在执行时打印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