YAML Configuration Files
Reading YAML
Always use safe_load to prevent code execution vulnerabilities:
import yaml
with open('config.yaml', 'r') as f:
config = yaml.safe_load(f)
# Access nested values
value = config['section']['key']
Writing YAML
import yaml
data = {
'settings': {
'param1': 1.5,
'param2': 0.1
}
}
with open('output.yaml', 'w') as f:
yaml.dump(data, f, default_flow_style=False, sort_keys=False)
Options
default_flow_style=False: Use block style (readable)sort_keys=False: Preserve insertion orderallow_unicode=True: Support unicode characters
Error Handling
import yaml
try:
with open('config.yaml', 'r') as f:
config = yaml.safe_load(f)
except FileNotFoundError:
config = {} # Use defaults
except yaml.YAMLError as e:
print(f"YAML parse error: {e}")
config = {}
Optional Config Loading
import os
import yaml
def load_config(filepath, defaults=None):
"""Load config file, return defaults if missing."""
if defaults is None:
defaults = {}
if not os.path.exists(filepath):
return defaults
with open(filepath, 'r') as f:
loaded = yaml.safe_load(f) or {}
# Merge loaded values over defaults
result = defaults.copy()
result.update(loaded)
return result