web-dev-qa-db-ja.com

実行時にPythonファイルのdocstringを印刷するにはどうすればよいですか?

Pythonスクリプトと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>")
67
thias

Docstringは、モジュールの___doc___グローバルに保存されます。

_print(__doc__)
_

ちなみに、これはすべてのモジュールに適用されます:import sys; print(sys.__doc__)。関数とクラスのドキュメント文字列も___doc___属性にあります。

75
Petr Viktorin

スクリプトのファイル名をハードコードせず、代わりにsys.argv [0]を使用して印刷する代替方法を次に示します。 %sの代わりに%(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)
13
wint3rschlaefer

引数の解析は、常に argparse で行う必要があります。

Argparseのdescriptionパラメーターに渡すことで、__doc__文字列を表示できます。

#!/usr/bin/env python
"""
This describes the script.
"""


if __== '__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
8
Martin Thoma

私はそのような問題を手に入れ、ウェブ上を歩いてみて、幸運にも答えを見つけ、sysモジュールを学び、Pythonでスクリプトを作成しました。ここにあります

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

./yourscriptname.py --helpまたはpython3 yourscriptname.py --helpと入力すると、docstringが表示されます

0
Mr CaT