Добавление элементов в генераторы python
Вопрос
Можно ли добавлять элементы к генератору python?
В настоящее время я пытаюсь получить все изображения из набора неорганизованных папок и записать их в новый каталог.Чтобы получить файлы, я использую os.walk(), который возвращает список файлов изображений в одном каталоге.Хотя я могу создать генератор из этого единственного списка, я не знаю, как объединить все эти списки в один единый генератор.Любая помощь была бы высоко оценена.
Похожие:
Решение
Это должно сделать это, где directories
это ваш список каталогов:
import os
import itertools
generators = [os.walk(d) for d in directories]
for root, dirs, files in itertools.chain(*generators):
print root, dirs, files
Другие советы
Вы ищете itertools.chain
.Он объединит несколько итераций в одну, вот так:
>>> for i in itertools.chain([1,2,3], [4,5,6]):
... print i
...
1
2
3
4
5
6
def files_gen(topdir='.'):
for root, dirs, files in os.walk(topdir):
# ... do some stuff with files
for f in files:
yield os.path.join(root, f)
# ... do other stuff
for f in files_gen():
print f
Вот так.
def threeGens( i, j, k ):
for x in range(i):
yield x
for x in range(j):
yield x
for x in range(k):
yield x
Работает хорошо.
Не связан с StackOverflow