在传递一些命令行参数并使用库之后,我想初始化一个全局变量,在这种情况下是dict
调用的。DOC
click
我尝试了以下方法:
#!/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
?