python讀取yaml檔案後修改寫入本地例項

2022-09-28 22:00:26 字數 3416 閱讀 9875

首先安裝pip install ruamel.yaml

用於修改yaml檔案

#coding:utf-8

from ruamel import yaml

def up_yml(ip_server):

with open('./../docker-compose-demo.yml', encoding="utf-8") as f:

content = yaml.load(f, loader=yaml.roundtriploader)

# 修改yml檔案中的引數

content['service']['memo_query']['server_ip'][0] = 'mysql_host={}'.format(ip_server)

with open('./../docker-compose.yml', 'w', encoding="utf-8") as nf:

yaml.dump(content, nf, dumper=yaml.roundtripdumper)

if __name__ == '__main__':

up_yml(ip_server='0.0.0.0')

修改前:

version: '1'

service:

memo_query:

image: python:2.0

restart: always

server_ip:

- mysql_host=192.168.1.1

修改後:

version: '1'

service:

memo_query:

image: python:2.0

restart: always

server_ip:

- mysql_host=0.0.程式設計客棧0.0

補充知識:解決 python ruamel.yaml 讀寫 yaml 文件 format 格式不一致問題

使用 ruamel.yaml 過程中發現輸入輸出格式不一致,網上找到乙個解決方案:

input:

chuatony:

公司: 文傳

聯絡:

- 公司: '1422031030'

- 手機: '18650144578'

- 住家: '2233068479'

住址:

- 公司: 褔建。

- 住家: 臺中。

交通: 無

附件:

tom:

公司: 天褔

聯絡:

- 公司: '1422031030'

- 手機: '18650123456'

- 住家: '2233061234'

住址:

- 公司: 褔建。

- 住家: 台北。

交通: 自行車

附件:output:

chuatony:

交通: 無

住址:- 公司: 褔建。

- 住家: 臺中。

公司: 文傳

聯絡:- 公司: '1422031030'

- 手機: '1865程式設計客棧0144578'

- 住家: '2233068479'

附件: null

tom:

交通: 自行車

住址:- 公司: 褔建。

- 住家: 台北。

公司: 天褔

聯絡:- 公司: '963852741'

- 手機: '18650123456'

- 住家: '2233061234'

附件: null

格式不一致

使用:ruamel.yaml.load(loader=ruamel.yaml.roundtriploader) ruamel.yaml.dump(dumper=ruamel.yaml.roundtripdumper)

或ruamel.yaml.round_trip_load() ruamel.yaml.round程式設計客棧_trip_dump()

來解決修改程式碼如下:

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

' a yaml module '

__author__ = 'chua tony'

import ruamel.yaml

#開檔with open("人資.yaml", "r",encoding="utf-8") as docs:

try:

#alldata = ruamel.yaml.load(docstypeh, loader=ruamel.yaml.roundtriploader) #使用 loader=ruamel.yaml.roundtriploader

alldata = ruamel.yaml.round_trip_load(docs)

except ruamel.yaml.yamlerwww.cppcns.comror as exc:

print(exc)

#印出for data in alldata:

print(alldata[data]['聯絡'])

#修改alldata['tom']['聯絡'][0]['公司']='963852741'

#寫檔with open('人資1.yaml', 'w+', encoding='utf8') as outfile:

#ruamel.yaml.dump(alldata, outfile, default_flow_style=false, allow_unicode=true, dumper=ruamel.yaml.roundtripdumper, indent=2, block_seq_indent=2) #使用 dumper=ruamel.yaml.roundtripdumper

ruamel.yaml.round_trip_dump(alldata, outfile, default_flow_style=false, allow_unicode=true, indent=2, block_seq_indent=2) #indent:縮排 block_seq_indent:區塊縮排

output:

chuatony:

公司: 文傳

聯絡:- 公司: '1422031030'

- 手機: '18650144578'

- 住家: '2233068479'

住址:- 公司: 褔建。

- 住家: 臺中。

交通: 無

附件:tom:

公司: 天褔

聯絡:- 公司: '963852741'

- 手機: '18650123456'

- 住家: '2233061234'

住址:- 公司: 褔建。

- 住家: 台北。

交通: 自行車

附件:搞定!!!

本文標題: python讀取yaml檔案後修改寫入本地例項

本文位址:

python讀取 YAML檔案

yaml在我的理解看來,它是一種資料的格式,他的格式跟json很相近,但是yaml支援注釋 1.物件名 健 空格 對。寫法一 desired caps platformname android devicename xiaomi mix platformversion 5.1 unicodekeyb...

python讀取YAML檔案步驟

安裝 pyyaml 模組 pip install pyyaml 編寫 存在 test.yml 檔案,內容如下 name xiaohong age 24 books 吶喊 朝花夕拾讀取yaml 如下 import yaml file open test.yaml r encoding utf 8 使用...

python筆記 讀取yaml檔案

使用yaml.load 總是出現告警 yamlloadwarning calling yaml.load without loader is deprecated,as the default loader is unsafe.please read for full details.原因 yaml...