Python如何循环提取YAML文件中Histograms节点下的子字典键名
实现方法
需要用Python的PyYAML库解析YAML文件,步骤如下:
第一步:安装PyYAML依赖
执行命令:pip install pyyaml第二步:单文件读取代码示例
import yaml # 替换为你的YAML文件路径 yaml_path = "你的配置文件路径.yaml" with open(yaml_path, "r", encoding="utf-8") as f: # 用safe_load安全加载YAML内容,避免执行恶意代码 yaml_content = yaml.safe_load(f) # 直接获取Histograms下的所有子键,得到你需要的字符串列表 hist_keys = list(yaml_content["Histograms"].keys()) print(hist_keys)
运行以上代码输出结果为:['zee', 'ztautau', 'ttbar', 'wplustaunu']
- 第三步:多文件批量处理示例
如果需要批量处理目录下所有同类YAML文件,可以参考以下代码:
import os import yaml # 替换为你的YAML文件所在目录路径 yaml_dir = "你的YAML文件目录路径" all_hist_keys = {} for filename in os.listdir(yaml_dir): if filename.endswith((".yaml", ".yml")): file_path = os.path.join(yaml_dir, filename) with open(file_path, "r", encoding="utf-8") as f: yaml_content = yaml.safe_load(f) all_hist_keys[filename] = list(yaml_content["Histograms"].keys()) # 输出所有文件对应的Histograms子键 for file, keys in all_hist_keys.items(): print(f"{file} 对应的键:{keys}")
说明
yaml.safe_load是官方推荐的加载方式,不会执行YAML中嵌入的恶意代码,适合处理来源不确定的配置文件。如果你的YAML中包含自定义类型标签,可以根据需求换成yaml.full_load。
内容的提问来源于stack exchange,提问作者Matthew D.
相关产品推荐
相关产品推荐

