如何使用生成器遍历文件系统?

2024-05-05

我正在尝试创建一个实用程序类来遍历目录中的所有文件,包括子目录和子子目录中的文件。我尝试使用发电机,因为发电机很酷;然而,我遇到了困难。


def grab_files(directory):
    for name in os.listdir(directory):
        full_path = os.path.join(directory, name)
        if os.path.isdir(full_path):
            yield grab_files(full_path)
        elif os.path.isfile(full_path):
            yield full_path
        else:
            print('Unidentified name %s. It could be a symbolic link' % full_path)

当生成器到达目录时,它只是生成新生成器的内存位置;它没有给我目录的内容。

如何使生成器生成目录的内容而不是新的生成器?

如果已经有一个简单的库函数可以递归地列出目录结构中的所有文件,请告诉我。我不打算复制库函数。


当你可以使用时为什么要重新发明轮子os.walk http://docs.python.org/library/os.html#os.walk

import os
for root, dirs, files in os.walk(path):
    for name in files:
        print os.path.join(root, name)

os.walk 是一个生成器,它通过自上而下或自下而上遍历目录树来生成目录树中的文件名

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用生成器遍历文件系统? 的相关文章

随机推荐