我有一个带有docstring的Python脚本。当解析命令行参数不成功时,我想打印文档字符串以获取用户的信息。
有没有办法做到这一点?
#!/usr/bin/env python
"""
Usage: script.py
This describes the script.
"""
import sys
if len(sys.argv) < 2:
print("<here comes the docstring>")
答案 0 :(得分:75)
docstring存储在模块的__doc__
全局。
print(__doc__)
顺便说一句,这适用于任何模块:import sys; print(sys.__doc__)
。函数和类的文档字符串也在__doc__
属性中。
答案 1 :(得分:13)
这是一种替代方法,它不对脚本的文件名进行硬编码,而是使用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)
答案 2 :(得分:7)
应始终使用argparse
完成参数解析。
您可以通过将__doc__
字符串传递给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
答案 3 :(得分:0)
我遇到了这样的问题,走过网络,幸运的是找到了答案,学习了sys
模块,并在 Python 中创建了一个脚本,这里就是
if __name__=='__main__':
if len(sys.argv)==2 and sys.argv[1]=='--help':
print(__doc__)
键入./yourscriptname.py --help
或python3 yourscriptname.py --help
,它会显示您的文档字符串
答案 4 :(得分:0)
对@MartinThoma 的回答进行了增强,因此它可以打印受 Python argparse: How to insert newline in the help text? 启发的多行文档字符串。
<块引用>参数解析应始终使用 argparse 完成。
您可以通过将 doc 字符串传递给描述来显示它 Argparse 的参数:
#!/usr/bin/env python
"""
This summarizes the script.
Additional descriptive paragraph(s).
""" # Edited this docstring
if __name__ == '__main__':
from argparse import ArgumentParser, RawTextHelpFormatter # Edited this line
parser = ArgumentParser(description=__doc__
formatter_class=RawTextHelpFormatter) # Added this line
# 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 summarizes the script.
Additional descriptive paragraph(s).
optional arguments:
-h, --help show this help message and exit
-f FILE, --file FILE write report to FILE
如果不添加 formatter_class
,输出将不会在文档字符串中包含换行符。