簡體   English   中英

如果它們與列表 python 中的項目匹配,則從 yaml 文件的值中刪除

[英]remove from values from yaml file if they match items in list python

這是我的 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.yamlhost.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 的新手。

您可以通過以下方式首先安裝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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM