Как я могу напечатать строку документации файла Python при его выполнении? - PullRequest
66 голосов
/ 17 октября 2011

У меня есть скрипт Python с строкой документации. Когда анализ аргументов командной строки не удается, я хочу напечатать строку документации для информации пользователя.

Есть ли способ сделать это?

Минимальный пример

#!/usr/bin/env python
"""
Usage: script.py

This describes the script.
"""

import sys


if len(sys.argv) < 2:
    print("<here comes the docstring>")

Ответы [ 4 ]

75 голосов
/ 17 октября 2011

Строка документации хранится в глобальном модуле __doc__.

print(__doc__)

Кстати, это касается любого модуля: import sys; print(sys.__doc__). Строки документации функций и классов также находятся в их атрибуте __doc__.

13 голосов
/ 25 февраля 2013

Вот альтернатива, которая не жестко кодирует имя файла скрипта, а вместо этого использует sys.argv [0] для его печати. Использование% (scriptName) s вместо% 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)
8 голосов
/ 28 июля 2014

Разбор аргументов всегда должен выполняться с помощью 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
0 голосов
/ 26 ноября 2017

У меня возникла такая проблема, я прогулялся по сети и, к счастью, нашел ответ, выучил модуль sys и создал скрипт на Python , вот он

if __name__=='__main__':
 if len(sys.argv)==2 and sys.argv[1]=='--help':
    print(__doc__)

, набрав ./yourscriptname.py --help или python3 yourscriptname.py --help, он покажет вашу строку документации

...