多くのコマンドライン引数を渡して、click
ライブラリを使用して、DOC
というグローバル変数(この場合はdict
)を初期化したいとします。cli:dictとグループのクリック機能を初期化する方法
私は次のことを試してみました:
#!/usr/bin/python3
import os
import sys
import yaml
import logging
import click
DOC = {}
@click.group()
def cli():
pass
@click.command()
@click.option("--logger-file", required=True, default='{}/blabla/cfg/logger.{}.yml'.format(os.environ['HOME'],os.path.basename(__file__)), show_default=True, help="YAML logging configuration file")
def cli_logger_file(logger_file):
if os.path.exists(logger_file):
try:
with open(logger_file, "rt") as f:
DOC = yaml.safe_load(f.read())
print("logger")
except Exception as e:
print(str(e))
sys.exit()
else:
sys.exit()
if __name__ == '__main__':
cli_logger_file()
print("hi!")
print(DOC)
をしかし、私はそれを実行すると、出力は次のとおりです。
$ python3 etc.py --logger-file=/home/blabla/cfg/logger.src.app.component.yml
logger
{}
あなたは私を理解して助けてくださいでした:
- 私はなぜ
hi!
が印刷されていませんか? - なぜ
@click.command()
を@cli.command()
に置き換えると、コマンドラインオプション--logger-file
が認識されないのですか?