본문 바로가기
Python/Python FAQ

Python 파이썬 예외 메시지 캡처, python exception message capturing

by 베타코드 2023. 6. 26.
반응형

질문


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 = "일부 ftp 주소"

def upload_to_ftp(con, filepath):
    try:
        f = open(filepath,'rb')                # 보낼 파일
        con.storbinary('STOR '+ filepath, f)         # 파일 보내기
        f.close()                                # 파일과 FTP 닫기
        logger.info(FTPADDR+ '에 파일이 성공적으로 업로드 되었습니다.')
    except, e:
        logger.error('FTP에 업로드하지 못했습니다: '+ str(e))

이 방법은 작동하지 않는 것 같습니다. 구문 오류가 발생합니다. 모든 종류의 예외를 파일에 기록하는 올바른 방법은 무엇인가요?


답변


예외를 잡을 타입을 정의해야합니다. 일반적인 예외 (어쨌든 기록될 것입니다)을 위해 except Exception, e: 대신 except, e:를 작성하십시오.

다른 가능성은 전체 try / except 코드를 이러한 방식으로 작성하는 것입니다.

try:
    with open(filepath,'rb') as f:
        con.storbinary('STOR '+ filepath, f)
    logger.info('File successfully uploaded to '+ FTPADDR)
except Exception, e: # python 2.x에서 작동
    logger.error('Failed to upload to ftp: '+ str(e))

Python 3.x 및 최신 버전의 Python 2.x에서는 except Exception, e 대신 except Exception as e를 사용하십시오.

try:
    with open(filepath,'rb') as f:
        con.storbinary('STOR '+ filepath, f)
    logger.info('File successfully uploaded to '+ FTPADDR)
except Exception as e: # python 3.x에서 작동
    logger.error('Failed to upload to ftp: '+ str(e))
반응형

댓글