Frage

Ist es möglich, Elemente zu einem Python-Generator anhängen?

Ich versuche zur Zeit alle Bilder von einer Reihe von unorganisierten Ordner zu erhalten und sie in ein neues Verzeichnis zu schreiben. Um die Dateien zu bekommen, ich bin mit os.walk (), die eine Liste von Bilddateien in einem einzigen Verzeichnis zurückgibt. Während ich einen Generator aus dieser einzigen Liste machen kann, weiß ich nicht, wie all diese Listen zu einem einzigen Generator zu kombinieren. Jede Hilfe wäre sehr geschätzt.

Siehe auch:

War es hilfreich?

Lösung

Das sollte es tun, wo directories Ihre Liste von Verzeichnissen ist:

import os
import itertools

generators = [os.walk(d) for d in directories]
for root, dirs, files in itertools.chain(*generators):
    print root, dirs, files

Andere Tipps

Sie suchen itertools.chain . Es wird mehrere Iterables zu einem einzigen kombinieren, wie folgt aus:

>>> 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

Wie dies.

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

Funktioniert gut.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top