假设我的目录中有一百万个文件,如果我这样做,那将是一个巨大的内存消耗:
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获得(cur_directory,sub_directories,list_of_all_files_in_cur_directory)的值。 x [2]将包含100万个文件名。在第二个for语句中,我也产生一个值,生成一个生成器,但是,在那时,我已经从x创建了一个列表,所以,这个代码是否真的会节省用于100万件物品?或者这不是使用生成器用于用例的正确方法吗?如果是这样,我该怎么做呢?