我想初始化一個全局變量,在這種情況下dict
DOC
,在傳遞了一些命令行參數和使用click
庫。cli:如何初始化一個字典和組點擊函數
我曾嘗試以下:
#!/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!
正在打印? - 爲什麼如果我用
@cli.command()
替換@click.command()
它不能識別命令行選項--logger-file
?