[date: 2018-03-22 11:41] [visits: 5]

Python错误与调试

错误

try-catch语法:

try:
    pass
except SomeError as e:
    pass
except SomeError as e:
    pass
finally:
    pass

logging模块

日志级别:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET

import logging

logging.debug('debug')
logging.info('info')
logging.warning('warning')

# 默认打印到标准输出,日志级别WARNING

logging.basicConfig

通过该函数配置日志的输出格式及方式,日志可同时输出到多个位置

import logging

logging.basicConfig(level = logging.ERROR,
    format = '%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
    datefmt = '%a, %d %b %Y %H:%M:%S',
    filename = 'amsimple.log',
    filemode = 'a')

console = logging.StreamHandler()
console.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
console.setFormatter(formatter)
logging.getLogger('').addHandler(console)

格式说明:

%(levelno)s 日志级别的数值
%(levelname)s 日志级别名称
%(pathname)s 当前执行程序的路径
%(filename)s 当前执行程序名
%(funcName)s 日志的当前函数
%(lineno)d 日志的当前行号
%(asctime)s 日志的时间
%(thread)d 线程ID
%(threadName)s 线程名称
%(process)d 进程ID
%(message)s 日志信息

logging.config

可通过配置文件定义logging行为,然后在代码中加载配置以及获取日志。

import logging
import logging.config

logging.config.fileConfig('logger.conf')
logger = logging.getLogger('A') # 获取配置文件中对应的logger A

pdb调试

通过python -m pdb xxx.py可进入pdb调试状态,或者在代码中import pdb,通过pdb.set_trace()触发调试。

常用命令:

break 或 b 设置断点
continue 或 c 继续执行程序
list 或 l 查看当前行的代码段
step 或 s 进入函数
return 或 r 执行代码直到从当前函数返回
exit 或 q 中止并退出
next 或 n 执行下一行
pp 打印变量的值
help 帮助