Можно ли добавить элементы в генератор питона?
В настоящее время я пытаюсь получить все изображения из набора неорганизованных папок и записать их в новый каталог. Чтобы получить файлы, я использую os.walk (), которая возвращает список файлов изображений в одном каталоге. Хотя я могу сделать генератор из этого единого списка, я не знаю, как объединить все эти списки в один генератор. Любая помощь будет высоко ценится.
Связанный:
Вы ищете itertools.chain. Он объединит несколько итераций в один, например:
itertools.chain
>>> for i in itertools.chain([1,2,3], [4,5,6]): ... print i ... 1 2 3 4 5 6
Это должно сделать, где directories - ваш список каталогов:
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
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
Работает хорошо.