读取yaml文件

367 阅读1分钟

JS-YAML

nodeca.github.io/js-yaml/

JSON To YAML

www.json2yaml.com/

yaml配置文件

config.yml

version: '3'
services:      
  web:    
    build: .    
    ports:     
      - "5000:5000"   
  redis:    
    image: "redis:alpine" 

Python读取yaml配置文件

import yaml
import os

cfg = open('config.yml', encoding='utf-8')
cfg_content = cfg.read()
cfg.close()

# 装载yaml
data = yaml.load(cfg_content, Loader=yaml.FullLoader)
print(data)
print(type(data))   # <class 'dict'>

print(data.get('version'))
print(data['version'])
print(data.get('services').get('web').get('ports'))
print(data['services']['web']['ports'])

Loader可用选项: github.com/yaml/pyyaml…


Golang读取yaml配置文件

package main

import (
	"fmt"
	"io/ioutil"

	"gopkg.in/yaml.v2"
)

func main() {
	data, err := ioutil.ReadFile("config.yml")
	if err != nil {
		panic(err)
	}

	// 定义配置文件结构
	type Config struct {
		Version  string `yaml:"version"`
		Services struct {
			Web struct {
				Build string   `yaml:"build"`
				Ports []string `yaml:"ports"`
			}
			Redis struct {
				Image string `yaml:"image"`
			}
		}
	}

	var config Config
	// 反序列化yaml配置文件到结构体
	if err := yaml.Unmarshal(data, &config); err != nil {
		panic(err)
	}

	fmt.Println(config.Version)
	fmt.Println(config.Services.Web.Ports)
}

Laravel读取yaml配置文件

安装symfony的yaml组件

composer require symfony/yaml

app/Http/config.yml

<?php

namespace App\Http\Controllers;
use Symfony\Component\Yaml\Yaml;

class TestController extends Controller {
    public function index(){
        // app/Http/config.yml
        $config = (new Yaml())->parseFile(dirname(__DIR__) . "/config.yml");
        return $config;
    }
}