You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

函数遍历目录YAML文件时,print输出全部值但return仅返回单个值的问题

问题分析与解决方案

嘿,这问题我太熟啦!你的函数里return语句放在了for循环内部,这就是为啥只能返回单个值的原因——只要return被执行,函数就会立刻终止运行,循环还没来得及处理后面的文件就直接退出了,自然只能拿到第一个文件的结果。

咱们来改改代码:

首先,先创建一个空列表用来存储所有提取到的collection name,然后在循环里把每个结果添加到列表中,等所有文件都处理完之后,再一次性返回整个列表:

import os
import yaml

def return_yml_file_names():
    """return file names from the yaml directory"""
    collections = os.listdir('yaml/')
    collections.remove('export_config.yaml')
    # 初始化空列表存储结果
    collection_names = []
    for file in collections :
        with open('yaml/' + file, 'r') as f:
            # 建议用safe_load替代load,避免安全风险
            doc = yaml.safe_load(f)
            collection_name = doc["config"]["collection"] + ".json"
            # 将结果添加到列表,而不是直接return
            collection_names.append(collection_name)
    # 循环结束后返回整个列表
    return collection_names

# 调用函数并打印所有结果
results = return_yml_file_names()
for name in results:
    print(name)

另外还要提醒你:yaml.load()存在安全隐患,可能会执行恶意代码,所以尽量用yaml.safe_load()来替代,这是更安全的做法哦。

现在运行修改后的代码,就能得到所有YAML文件里提取的collection name啦~

内容的提问来源于stack exchange,提问作者spark dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:30:22