Python-Ausnahmemeldung erfassen


Answers

Die Syntax wird in Python 3 nicht mehr unterstützt. Verwenden Sie stattdessen Folgendes.

try:
    do_something()
except BaseException as e:
    logger.error('Failed to do something: ' + str(e))
Question
import ftplib
import urllib2
import os
import logging
logger = logging.getLogger('ftpuploader')
hdlr = logging.FileHandler('ftplog.log')
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(logging.INFO)
FTPADDR = "some ftp address"

def upload_to_ftp(con, filepath):
    try:
        f = open(filepath,'rb')                # file to send
        con.storbinary('STOR '+ filepath, f)         # Send the file
        f.close()                                # Close file and FTP
        logger.info('File successfully uploaded to '+ FTPADDR)
    except, e:
        logger.error('Failed to upload to ftp: '+ str(e))

Dies scheint nicht zu funktionieren, ich bekomme Syntaxfehler, was ist der richtige Weg, dies zu tun, um alle Arten von Ausnahmen zu einer Datei zu protokollieren




Es gibt einige Fälle, wo Sie die e.message oder e.messages verwenden können . Aber es funktioniert nicht in allen Fällen. Wie auch immer, desto sicherer ist es, den str (e) zu benutzen

try:
  ...
except Exception as e:
  print(e.message)



Sie können versuchen, den BaseException-Typ explizit anzugeben. Dies wird jedoch nur Derivate von BaseException abfangen. Obwohl dies alle von der Implementierung bereitgestellten Ausnahmen einschließt, ist es auch möglich, beliebige Klassen im alten Stil zu erstellen.

try:
  do_something()
except BaseException, e:
  logger.error('Failed to do something: ' + str(e))



Links