Python错误、调试和测试——学习笔记
2016-04-21 22:21
761 查看
1、错误处理(
try...except...finally...的错误处理机制)
try: print('try...') r = 10 / int('a') print('result:', r) except ValueError as e: print('ValueError:', e) except ZeroDivisionError as e: print('ZeroDivisionError:', e) finally: print('finally...') print('END')</span>2、调用日志,记录错误,保证程序正常退出,不实现效果但不至于出错:import logging
import logging try: pass except Exception as e: logging.exception(e)</span>3、 所有的错误类型都继承自
BaseException4、通过调用import logging 并配置相关文件,将程序异常写入log文件logging.basicConfig(level=logging.DEBUG,format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',datefmt='%a, %d %b %Y %H:%M:%S',filename='/tmp/test.log',filemode='w') 在logging.basicConfig()函数中可通过具体参数来更改logging模块默认行为,可用参数有filename: 用指定的文件名创建FiledHandler(后边会具体讲解handler的概念),这样日志会被存储在指定的文件中。filemode: 文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。format: 指定handler使用的日志显示格式。datefmt: 指定日期时间格式。level: 设置rootlogger(后边会讲解具体概念)的日志级别stream: 用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件,默认为sys.stderr。若同时列出了filename和stream两个参数,则stream参数会被忽略。format参数中可能用到的格式化串:%(name)s Logger的名字%(levelno)s 数字形式的日志级别%(levelname)s 文本形式的日志级别%(pathname)s 调用日志输出函数的模块的完整路径名,可能没有%(filename)s 调用日志输出函数的模块的文件名%(module)s 调用日志输出函数的模块名%(funcName)s 调用日志输出函数的函数名%(lineno)d 调用日志输出函数的语句所在的代码行%(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示%(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数%(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒%(thread)d 线程ID。可能没有%(threadName)s 线程名。可能没有%(process)d 进程ID。可能没有%(message)s 用户输出的消息5、Python 中 if __name__ == "__main__": 解析模块是对象,并且所有的模块都有一个内置属性 __name__。一个模块的 __name__ 的值取决于如何应用模块。如果 import 一个模块,那么模块__name__ 的值通常为模块文件名,不带路径或者文件扩展名。但是也可以像一个标准的程序那样直接运行模块,在这 种情况下, __name__ 的值将是一个特别缺省"__main__"。在cmd 中直接运行.py文件,则__name__的值是'__main__';而在import 一个.py文件后,__name__的值就不是'__main__'了;从而用if __name__ == '__main__'来判断是否是在直接运行该.py文件。6、Python 自定义模块导入方法from package import module注意:一定要新建python package,会自动添加一个__init__.py 文件。这里的package里面一定要有__init__.py文件,否则在import过程中pycharm会提示出错,尽管程序能运行。7、调试 (未完待续)8、单元测试(未完待续)9、文档测试(未完待续)声明:学习廖雪峰的Python教程——错误、调试和测试章节后的学习笔记,感谢MichealLiao.
相关文章推荐
- Python之前端
- python numpy使用
- Python面向对象高级编程——学习笔记
- IPython和Jupyter Notebook 简介
- Python之线程池
- python中 pip install scrapy
- Python之Web框架们
- Python面向对象编程——学习笔记
- Python多线程join的用法
- 《用 Python 学微积分》笔记 1
- Python模块——学习笔记
- Python函数式编程——学习笔记
- Python多线程互斥锁
- Python高级特性——学习笔记
- cmd命令行交互执行python引入模块时提示ImportError: No module named xxx
- Python函数——学习笔记
- python语言的解释性执行问题(备份一下,以供以后学习参考)
- Python框架之Tornado(四)源码之褪去模板外衣
- 菜鸟入门_Python_机器学习(4)_PCA和MDA降维和聚类
- Python框架之Tornado(四)源码之褪去模板外衣的前戏