首先安裝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...