高级语言都自带处理异常的函数:try....except.....finally
出现异常直接中断执行,直接到except捕获匹配错误类型,常见的错误类型可见 常见的错误类型和继承关系
def foo(s):
return 10 / int(s)
def bar(s):
return foo(s) * 2
def main():
try:
bar('0')
except Exception as e:
print('Error:', e)
finally:
print('finally...')
logging模块可以记录错误的信息,
except Exception as e;
logging.exception(e)
抛出错误:自己定义一个错误的class,选择好一个实例,用raise抛出一个错误的实例
eval() 函数用来执行一个字符串表达式,并返回表达式的值。
a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"
b = eval(a)
b
Out[3]: [[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]]
调试:断言机制,pdb,IDE.......
super调用下一个父类并且返回当前父类的实例(两个个参数1:召唤的父类的类名 2:可缺参数,可以是实例对象or该类的子类)
lass A(object):
def __init__(self):
print "enter A"
print "leave A"
class B(A):
def __init__(self):
print "enter B"
super(B, self).__init__()
print "leave B"
>>> b = B()
enter B
enter A
leave A
leave B
with as 语句的作用主要如下:
1、解决异常退出时资源释放的问题;
2、解决用户忘记调用close方法而产生的资源泄漏问题;
with EXPR [ as VAR ]:
BLOCK
'''1,EXPR可以是任意表达式。
2,as VAR是可选的。
3,BLOCK是with语句的语句体'''
with self.assertRaises(KeyError): '''通过d['empty']访问不存在的key时,断言会抛出KeyError'''
value = d['empty']
sublime显示缩进or空格
出现IndentationError: unindent does not match any outer indentation level错误一般是缩或者空格出现问题
差不多的代码执行出错,查找代码之间的变化:利用sublime插件sublimerge
1
单元测试(unittest):
文档测试(doctest):仅仅脚本测试的时候主食部分可执行
re正则匹配模块
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
import re
re.match(pattern, string, flags=0)
re.search 扫描整个字符串并返回第一个成功的匹配。
. :通配符
+ :匹配多个
^:匹配从字符串或者一行的开头开始
$:匹配必须出现在字符串的末尾或者是行或者字符串末尾的\n之前
文件读取:常用到try.....finally和with ......as(注意文件打开以及释放以免占用系统内存资源) 二进制'b'以字节对象返回内容,文本模式(默认't')以str的对象形式返回
try:
f = open('/path/to/file', 'r')
print(f.read())
finally:
if f:
f.close()
with open('f:/pypy/fib.py','r') as f:
print(f.read())
但是read()会一次性读取文件的全部内容,所以可以使用read(size) OR readline()
StringIO和BytesIO
OS:
合成路径:os.path.join('target dir','new-dir')
创建新目录:os.mkdir(' ')
删除目录;os.rmdir(' ')
>>> os.mkdir('/Users/michael/testdir')
# 删掉一个目录:
>>> os.rmdir('/Users/michael/testdir')