Wie man log-Fehler-Datei ist und nicht scheitern Ausnahme
Ich bin das herunterladen einer Datei aus dem Netz, und es schlägt fehl, obwohl ich das Tue:
für p in-Abfrage:
try:
except IOError as e:
print e;
Wenn es ist ein Fehler, ich möchten, melden Sie es, und dann weiter mit der nächsten Datei.
In dieser Schleife versuche ich ein Bild downloaden, wenn Sie aus irgendeinem Grund das mit dem Namen war schlecht, oder die Webseite war down, etc., Ich will weiter mit dem nächsten Element in der for-Schleife.
Gibt es eine generische Fehlermeldung, die nicht nachlassen und weiter verarbeiten?
Auch, wie kann ich die log-Fehler in einer Datei?
- Sobald der Fehler Auftritt, können Sie nicht weiter -- der download ist kaputt. Welche spezifischen Fehler sind Sie immer?
- Ich habe dies in einer for-Schleife warum kann ich nicht den Fehler abzufangen, dann weiter und versuchen Sie die nächste Datei?
- Da du nicht den code bereitstellen, ist es unmöglich zu erraten, warum Sie können nicht "fangen die Fehler, dann weiter und versuchen Sie die nächste Datei".
- Ihr Recht, my bad, ich aktualisiert die Frage.
- Da Sie noch nicht genügend code, den wir noch nicht ermitteln können, warum die Schleife nicht funktioniert.
- Was ist die Fehlermeldung (traceback) erhalten Sie, wenn das Skript beendet ist? Ist es ein
urllib2.HTTPError
zum Beispiel? Im moment scheint es, Sie kann nur zu fangenIOError
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie bereits von Lott, wenn ein download fehlschlägt, es sei denn, das problem ist behoben, die vor (oder mit Ihrer download-Adresse), die beste Sie tun können, ist versuchen Sie es erneut. Wenn jedoch die situation, dass Sie eine Liste von downloads, und wollen einfach zu überspringen fehlgeschlagene downloads beenden, dann:
Dinge zu beachten:
(1) die Nutzung der "
logging
" - Modul, vorgeschlagen von ~unutbu, gibt Ihnen viel mehr Flexibilität und Kraft mit log-Ausgabe, einschließlich der Zeitstempel, schreibt gleichzeitig an unterschiedliche Kanäle (z.B., stderr, file) - je nach Fehler-levels, etc. etc.(2) könnten Sie die Umsetzung der oben genannten Logik, die mit dem "
with
" konstruieren.Könnten Sie die logging Modul:
Läuft das script schreibt in /tmp/myapp.log:
Diesem schreiben Ihre Fehler in eine log-Datei, und fortfahren, um den code auszuführen.
Dieser fängt alles an.
Aber es ist viel, viel besser zu fangen, die genaue Ausnahme.
python <= 2.7