我正在努力提高我编写的脚本的质量,使其更易于维护,避免硬编码值。到目前为止,我使用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中编写配置文件的标准方法?
答案 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)