Ответ 1
Docstring хранится в модуле __doc__
global.
print(__doc__)
Кстати, это относится к любому модулю: import sys; print(sys.__doc__)
. Докстры функций и классов также находятся в атрибуте __doc__
.
У меня есть Python script с docstring. Когда разбор аргументов командной строки не удастся, я хочу напечатать docstring для информации пользователя.
Есть ли способ сделать это?
#!/usr/bin/env python
"""
Usage: script.py
This describes the script.
"""
import sys
if len(sys.argv) < 2:
print("<here comes the docstring>")
Docstring хранится в модуле __doc__
global.
print(__doc__)
Кстати, это относится к любому модулю: import sys; print(sys.__doc__)
. Докстры функций и классов также находятся в атрибуте __doc__
.
Вот альтернатива, которая не жестко кодирует имя файла script, но вместо этого использует 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)
Анализ аргументов всегда должен выполняться с помощью argparse
.
Вы можете отобразить строку __doc__
, передав ее параметру description
Argparse:
#!/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
У меня возникла такая проблема, я перешел через Интернет и, к счастью, нашел ответ, узнал модуль sys
и создал script в Python, вот он
if __name__=='__main__':
if len(sys.argv)==2 and sys.argv[1]=='--help':
print(__doc__)
набрав ./yourscriptname.py --help
или python3 yourscriptname.py --help
, он покажет вашу docstring