def load_config(): parser = argparse.ArgumentParser() parser.add_argument('-c', '--config', help='config file name', default='config.json') parser.add_argument('-e', '--env', help='environment', default='dev') # args = parser.parse_args() args, unknown = parser.parse_known_args() env_name = args.env or 'dev' global_profile = profiles.get(env_name, 'dev') logger = Log() logger.init(global_profile) config_name = args.config or 'config.json' logger.info('使用配置文件 "{}".'.format(config_name)) config_file = Path(__file__).parent.joinpath('./', config_name) if not config_file.exists(): config_name = 'config.default.json' logger.warning('配置文件不存在, 使用默认配置文件 "{}".'.format(config_name)) config_file = config_file.parent.joinpath(config_name) try: # 略坑, Path.resolve() 在 3.5 和 3.6 上表现不一致... 若文件不存在 3.5 直接抛异常, 而 3.6 # 只有 Path.resolve(strict=True) 才抛, 但 strict 默认为 False. # 感觉 3.6 的更合理些... config_file = config_file.resolve() config_dict = json.loads(config_file.read_text(encoding='utf-8')) except Exception as e: sys.exit('# 错误: 配置文件载入失败: {}'.format(e)) global_config = Account.load(config_dict) return global_profile, global_config, logger