Python argparse命令参数与config配置参数怎么使用(argparse,config,python,开发技术)

时间:2024-05-03 13:06:44 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    Python%C2%A0argparse%E5%91%BD%E4%BB%A4%E5%8F%82%E6%95%B0%E4%B8%8Econfig%E9%85%8D%E7%BD%AE%E5%8F%82%E6%95%B0%E6%80%8E%E4%B9%88%E4%BD%BF%E7%94%A8

argparse 是 Python 内置的一个用于命令项选项与参数解析的模块,通过在程序中定义好我们需要的参数,然后在程序启动命令行传递我们想要改变的参数

步骤:

(1)import argparse 首先导入模块

(2)parser = argparse.ArgumentParser() 创建一个解析对象

(3)parser.add_argument() 向该对象中添加你要关注的命令行参数和选项。第三步中,可以添加多个我们想要的参数。如下面的例子

(4)parser.parse_args() 进行解析

(5)vars()将解析值转换成字典对象,然后就可以使用了

例子如下,文件名为main.py

运行,得出下面的结果

<class 'argparse.Namespace'>
Namespace(labels_dir='./data/labels', models_dir='./data/models', last_dir_name='_seq_month_serial', batch_size=64, classes=9, predict_date='202101', last_date='202001', only_predict=False, delete_model=False, hidden_size=128, learning_rate=0.0005, export_excel=False, loss_type='categorical_crossentropy', avg_model_num=10, get_data=False)
分割线
<class 'dict'>
{'labels_dir': './data/labels', 'models_dir': './data/models', 'last_dir_name': '_seq_month_serial', 'batch_size': 64, 'classes': 9, 'predict_date': '202101', 'last_date': '202001', 'only_predict': False, 'delete_model': False, 'hidden_size': 128, 'learning_rate': 0.0005, 'export_excel': False, 'loss_type': 'categorical_crossentropy', 'avg_model_num': 10, 'get_data': False}

上面的对法如果你程序就只是一个文件,那就已经满足了。如果你项目比较大,有很多基础的命令配置参数在很多启动文件中都用到了,当然你可以在各自的启动文件中都写上,但是如果你这么做,后续参数值的修改和变动将非常麻烦,因为你需要同时修改很多启动文件,有没有办法修改一个启动文件就可以呢。办法是有的。

通过新建一个类来实现,文件名为share_args.py。这个类里面写上你所需要的命令参数

启动文件如下,文件名为main.py

结果如下。可以发现,类中默认的参数全部拿到了

ShareArgs.args : {'labels_dir': './data/labels', 'labels_output_dir': './yongjian/shop_group/month_w_amt/data/labels_output', 'common_datas_dir': './yongjian/data', 'only_predict': False, 'delete_model': False, 'export_excel': False, 'classes': 9, 'batch_size': 64, 'hidden_size': 128, 'max_nrof_epochs': 100, 'learning_rate': 0.0005, 'loss_type': 'categorical_crossentropy', 'avg_model_num': 10, 'steps_per_epoch': 4.0, 'lr_callback_patience': 4, 'lr_callback_cooldown': 1, 'early_stopping_callback_patience': 6, 'get_data': False, 'models_dir': './data/models', 'last_dir_name': '_seq_month_serial', 'predict_date': '202101', 'last_date': '202001'}

在第二部分中已经解释了如何配合多个启动文件的问题,用一个类来解决。但是呢,还有个问题就是如果有很多配置参数变动比较频繁,例如连接数据库的账号、密码、端口、ip等等,这些数据变动多,而且数据需要一定的保密性,所以不能通过建一个类来进行传递,那该怎么办呢?

通过读取配置文件config.yml来进行解决。可以把正式环境的配置信息放到config.yml里面,测试环境的配置信息放到configtest.py。这样可以确保整个项目读取到的共用信息的一致的,修改起来也很方便

下面的流程先解释细节,然后再展现总体,请耐心看到最后

config.yml的样式如下,表示正式环境的信息。

common:
server_ip: 10.23.167.20:9988
mip_server_ip: test-mip.ur.com.cn:8768
common_datas_dir: ./data
month_category_scale:
# export_db_database: test_ims # 测试
export_db_database: mimp # 正式
# export_db_host: 192.168.130.13 # 测试
export_db_host: 10.20.167.145 # 正式
# export_db_password: 123456 # 测试
export_db_password: 654321 # 正式
export_db_port: 4000
export_db_user: root
export_dir: ./month_category_scale/data/export
labels_dir: ./month_category_scale/data/labels
log_dir: ./month_category_scale/logs
log_level: DEBUG
models_dir: ./month_category_scale/data/models
ur_bi_dw_auth_mechanism: LDAP
ur_bi_dw_database: ur_ai_dw
ur_bi_dw_host: 10.23.167.20
ur_bi_dw_password: 123456789
ur_bi_dw_port: 21562
ur_bi_dw_save_dir: ./month_category_scale/data/ur_bi_dw_data
ur_bi_dw_user: urbiyetes

然后再建立一个文件,用于读取配置文件,文件名为:config_helper.py

改变之后的main.py文件如下

结果如下

加载正式环境配置:./config.yml
ShareArgs.args : {'labels_dir': './data/labels', 'labels_output_dir': './shop_group/month_w_amt/data/labels_output', 'common_datas_dir': './data', 'only_predict': False, 'delete_model': False, 'export_excel':
False, 'classes': 9, 'batch_size': 64, 'hidden_size': 128, 'max_nrof_epochs': 100, 'learning_rate': 0.0005, 'loss_type': 'categorical_crossentropy', 'avg_model_num': 10, 'steps_per_epoch': 4.0, 'lr_callback_patience': 4, 'lr_callback_cooldown': 1, 'early_stopping_callback_patience': 6, 'get_data': False, 'models_dir': './data/models', 'last_dir_name': '_seq_month_serial', 'predict_date': '202101', 'last_date': '202001'}
config : {'common': {'server_ip': '10.23.167.20:9988', 'mip_server_ip': 'test-mip.ur.com.cn:8768', 'common_datas_dir': './data'}, 'month_category_scale': {'export_db_database': 'mimp', 'export_db_host': '10.20.167.145', 'export_db_password': 654321, 'export_db_port': 4000, 'export_db_user': 'root', 'export_dir': './month_category_scale/data/export', 'labels_dir': './month_category_scale/data/labels', 'log_dir': './month_category_scale/logs', 'log_level': 'DEBUG', 'models_dir': './month_category_scale/data/models', 'ur_bi_dw_auth_mechanism': 'LDAP', 'ur_bi_dw_database': 'ur_ai_dw', 'ur_bi_dw_host': '10.23.167.20', 'ur_bi_dw_password': 123456789, 'ur_bi_dw_port': 21562, 'ur_bi_dw_save_dir': './month_category_scale/data/ur_bi_dw_data', 'ur_bi_dw_user': 'urbiyetes'}}

本文:Python argparse命令参数与config配置参数怎么使用的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:php连接数据库不支持中文如何解决下一篇:

3 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18