假设我的目录中有一百万个文件,如果我这样做的话,将会消耗大量内存:
x = os.listdir('.')
假设出于某种原因,我选择使用os.walk方法并使用生成器:
def give_object(somepath) for x in os.walk(somepath): for j in x[2]: yield j
os.walk本身就是一个生成器,我通过x.x[2]得到一个值(cur_directory,sub_directories,list_all_files_in_cur_directory)将包含100万个文件名。在第二个for语句中,我还生成了一个值,生成了一个生成器,但是,在这一点上,我已经从x中创建了一个列表,那么,这段代码真的可以节省100万个项目的内存空间吗?或者这不是在用例中使用generator的正确方法吗?如果是,我该怎么做呢?