如何在执行 Python 文件时打印它的文档字符串?
我有一个带有文档字符串的 Python 脚本。当命令行参数的解析不成功时,我想打印文档字符串以获取用户信息。
有什么办法可以做到这一点吗?
最小的例子
#!/usr/bin/env python
"""
Usage: script.py
This describes the script.
"""
import sys
if len(sys.argv) < 2:
print("<here comes the docstring>")
I have a Python script with a docstring. When the parsing of the command-line arguments does not succeed, I want to print the docstring for the user's information.
Is there any way to do this?
Minimal example
#!/usr/bin/env python
"""
Usage: script.py
This describes the script.
"""
import sys
if len(sys.argv) < 2:
print("<here comes the docstring>")
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
文档字符串存储在模块的全局
__doc__
中。顺便说一句,这适用于任何模块:
import sys;打印(sys.__doc__)
。函数和类的文档字符串也位于其__doc__
属性中。The docstring is stored in the module's
__doc__
global.By the way, this goes for any module:
import sys; print(sys.__doc__)
. Docstrings of functions and classes are also in their__doc__
attribute.参数解析应始终使用
argparse
完成。您可以通过将
__doc__
字符串传递给 Argparse 的description
参数来显示它:如果您调用此 mysuperscript.py 并执行它,您会得到:
Argument parsing should always be done with
argparse
.You can display the
__doc__
string by passing it to thedescription
parameter of Argparse:If you call this mysuperscript.py and execute it you get:
这是一种替代方法,它不会对脚本的文件名进行硬编码,而是使用 sys.argv[0] 来打印它。使用 %(scriptName)s 代替 %s 可以提高代码的可读性。
Here is an alternative that does not hardcode the script's filename, but instead uses sys.argv[0] to print it. Using %(scriptName)s instead of %s improves readability of the code.
增强@MartinThoma的答案,使其打印受 Python argparse:如何在帮助文本中插入换行符?。
如果不添加
formatter_class
,输出的文档字符串中将不会有换行符。An enhancement of @MartinThoma's answer so it prints multi-line docstrings inspired by Python argparse: How to insert newline in the help text?.
Without the addition of the
formatter_class
the output would not have the line break in the docstring.当
--help
是唯一参数时,这将打印__doc__
字符串。适用于两者:
./yourscriptname.py --help
python3 yourscriptname.py --help
This will print the
__doc__
string when--help
is the only argument.Works for both:
./yourscriptname.py --help
python3 yourscriptname.py --help