我正在尝试创建一个实用程序类来遍历目录中的所有文件,包括子目录和子子目录中的文件。我尝试使用发电机,因为发电机很酷;但是,我遇到了障碍。
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,为什么还要重新发明轮子?
import os
for root, dirs, files in os.walk(path):
for name in files:
print os.path.join(root, name)
os.walk 是一个生成器,它通过自顶向下或自底向上遍历目录树来生成目录树中的文件名
关于python - 如何使用生成器遍历文件系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1698596/