Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 比较两个YAML文件中的键并打印差异?_Python_Python 3.x - Fatal编程技术网

Python 比较两个YAML文件中的键并打印差异?

Python 比较两个YAML文件中的键并打印差异?,python,python-3.x,Python,Python 3.x,如果我们有两个yaml文件,我们将如何比较密钥并打印不匹配和/或丢失的密钥? 我尝试了DeepDiff,但它需要字典、iterables等,如何将yaml文件转换为字典并使用DeepDiff或任何其他方法?使用转换为扁平dict,然后进行比较。要将yaml文件加载为字典,可以使用PyYAML: import yaml with open("example.yaml", 'r') as fp: d = yaml.safe_load(fp) 试试这个软件包。我有一个类

如果我们有两个yaml文件,我们将如何比较密钥并打印不匹配和/或丢失的密钥?
我尝试了DeepDiff,但它需要字典、iterables等,如何将yaml文件转换为字典并使用DeepDiff或任何其他方法?

使用转换为扁平
dict
,然后进行比较。

要将yaml文件加载为字典,可以使用PyYAML:

import yaml

with open("example.yaml", 'r') as fp:
    d = yaml.safe_load(fp)

试试这个软件包。我有一个类似的用例,发现它非常有用。

以下内容对我很有用:

import yaml
from deepdiff import DeepDiff

def yaml_as_dict(my_file):
    my_dict = {}
    with open(my_file, 'r') as fp:
        docs = yaml.safe_load_all(fp)
        for doc in docs:
            for key, value in doc.items():
                my_dict[key] = value
    return my_dict

if __name__ == '__main__':
    a = yaml_as_dict(yaml_file1)
    b = yaml_as_dict(yaml_file2)
    ddiff = DeepDiff(a, b, ignore_order=True)
    print(ddiff)