如何为python脚本编写配置文件

时间:2017-03-15 00:45:39

标签: python json config

我正在努力提高我编写的脚本的质量,使其更易于维护,避免硬编码值。到目前为止,我使用json文件来保存这些值,E.G。

一个名为config_test.json的json文件:

{"input_dir":"data/input",
"output_dir":"data/output",
"default_value":10,
"dtypes":["str","int","str","float"]
}

然后我从主文件中读取这些值:

import json
with open('config_test.json') as f:
    config_d = json.load(f)
config_d

default_value =   config_d['default_value']
dtypes =   config_d['dtypes']
input_dir =   config_d['input_dir']
output_dir =   config_d['output_dir']

我对这个解决方案不太满意,有没有在python中编写配置文件的标准方法?

2 个答案:

答案 0 :(得分:1)

使用pyyaml

让您的生活更轻松
import yaml

with open("settings.yml", 'r') as stream:
    data = yaml.safe_load(stream)

您的settings.yml =>

ip_address : '0.0.0.0'
sqlite     : 'sqlite:///data.db'
key        : 'super-secret-hoho'

answers:
    technology: ['option3', 'option3', 'option4', 'option3', 'option3', 'option4', 'option4', 'option2', 'option3', 'option3']

然后使用

进行访问
my_not_hardcoded_ip = data['ip_address']

阅读和清洁效果更好,我完全推荐它!

答案 1 :(得分:1)

不要忽视用Python编写配置文件的可能性。

<强> some_dir / app_config.py

input_dir = "data/input"
output_dir = "data/output"
default_value = 10
dtypes = "str int str float".split()

<强>仓/ app.py

import argparse
import app_config as config

parser = argparse.ArgumentParser()
parser.add_argument('--inputdir', default=config.input_dir)