首页 > 解决方案 > 在 read_file 函数中使用 yield 和 return

问题描述

我正在编写一个简单的工具来读取我的文件,它应该能够区分给定路径是指向某个文件还是文件的根路径。

我的代码是这样的:

ALL_SEQ = ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10']

def read_pose_txt(filepath):
    if os.path.isfile(filepath):
        return np.loadtxt(filepath)
    elif os.path.isdir(filepath):
        for seq in ALL_SEQ:
            filepath_x = os.path.join(filepath, (str(seq)+".txt"))
            yield np.loadtxt(filepath_x)
    else:
        raise RuntimeError("wrong filepath")


但是当我给出某个文件的路径时,这个函数也会产生一个生成器,而不是简单地返回加载的 txt。

为什么我不能在同一个函数中使用 return 和 yield?有没有更好的方法来实现我这样一个智能文件阅读器的目标?

此致

标签: pythonyield

解决方案


if的 s 是向后的:如果路径是目录,则调用loadtxt; 如果它是一个文件,则循环调用loadtxt.


推荐阅读