Ich versuche, Iglob anstelle von Glob zu verwenden, um eine Liste von .txt-Dateien zu erhalten. Wenn keine .txt-Dateien existieren, gibt glob keine Fehler zurück, aber Iglob tut das.Handle Iglob-Fehler, wenn Pfad zu suchen nicht existiert
Code:
def iGlobLatest():
dir_list = glob.iglob('*.txt')
print dir_list.next()
wenn keine TXT-Dateien vorhanden sind, bekomme ich diese:
Traceback (jüngste Aufforderung zuletzt):
Datei „T: \ prod \ offlineValidation \ scripts \ goofin.py“, Linie 98, in iGlobLatest()
Datei "T: \ prod \ offlineValidation \ scripts \ goofin.py", Zeile 88, in iGlobLatest Druck dir_list.next()
StopIteration
Wenn ich try/except verwende, kann ich den Fehler vermeiden, aber ist das der einzige Weg? Andere Vorschläge zur Überprüfung der Existenz von TXT-Dateien beinhalten die Verwendung von glob, aber da ich versuche, statt glob zu verwenden iglob ....
Ich denke, die gut auch ausdrücklich, dass iglob zu beachten ist, nicht der Anruf, der die Ausnahme anhebt, wie vom Op. Es reagiert nicht anders als der Glob-Aufruf neben dem Rückgabetyp. Es ist der Aufruf des Rückgabetyps (des Generators), der die Ausnahme auslöst, so als ob Sie versucht hätten zu sagen: l = glob ('foo'); l [0] ', wenn glob keine Ergebnisse liefert. – jdi
Danke für die Info. Ich wusste nicht, dass man auch einen Iterator mit dem nächsten durchlaufen kann (Iterator). Und das erklärt auch, warum ich die Ausnahme sah, als ich iglob() so verwendete, wie ich es im Vergleich zu glob() tat. – itchmyback
@itchmyback: 'next (iterator)' macht dasselbe wie 'iterator.next()'. Die letztere Form erlaubt es jedoch nicht, einen Standardwert bereitzustellen, falls der Iterator erschöpft ist. –