這是我的 yaml 檔案
cat host.yaml
list1:
- host-1
- host-2
- host-3
- host-4
list2:
- host-5
- host-6
- host-7
- host-8
list3:
- host-9
- host-10
- host-11
- host-12
list4:
- host-13
- host-14
- host-15
- host-16
這是我的主機串列
cat host.list
host-1
host-5
host-7
host-11
host-16
我正在嘗試撰寫一個將host.yaml和host.list作為輸入的程式/腳本,如果host.list中的主機與主機中的主機匹配,yaml它應該編輯 yaml 并洗掉這些主機。
在上述場景中,python write_to_yaml.py host.yaml host.list應該在下面寫入 yaml 檔案。
cat host.yaml
list1:
- host-2
- host-3
- host-4
list2:
- host-6
- host-8
list3:
- host-9
- host-10
- host-12
list4:
- host-13
- host-14
- host-15
如果這是一個愚蠢的問題,請原諒我,我對 Python 非常陌生。
uj5u.com熱心網友回復:
您可以先pyyaml通過以下方式安裝:
pip install pyyaml
然后您可以使用該庫來讀取和寫入您的 yaml 檔案,如下所示:
import yaml
output = {}
host_set = []
# get list of hosts to exclude
with open(r'host.list') as file:
hosts = yaml.load(file, Loader=yaml.FullLoader)
host_set = set(hosts.split(" "))
# read host.yaml
with open(r'host.yaml') as file:
documents = yaml.full_load(file)
for l, hosts in documents.items():
output[l] = list(set(hosts) - host_set) # remove items from the read in list of hosts
# write to file
with open(r'output.yaml', 'w') as file:
documents = yaml.dump(output, file)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/441611.html
標籤:Python python-3.x 列表 yaml
下一篇:R:如何從列中洗掉嵌套串列?
