hy@hy:~/Documents/py$ vim te.py 1 try: 2 open(‘abc.txt‘) 3 except IOError,msg: 我们给它加上一个接受这个异常 4 pass hy@hy:~/Documents/py$ python te.py
hy@hy:~/Documents/py$ 我们发现不在出现异常,这时异常已经被处理了
hy@hy:~/Documents/py$ vim te.py 这样用户体验就会好一点
1 #!/usr/bin/python 2 #coding:utf8 3 4 filename = raw_input(‘请输入你要操作的文件:‘) 5 try: 6 open(filename) 7 except IOError,msg: 8 print "你指定的文件不存在" 9 except NameError,msg: 10 print "内部变量调用错误"
2)抛出机制
a.如果在运行时发生异常的话,解释器会查找相应的处理语句(称为handler)。
b.要是在当前函数里没有找到的话,它会将异常传递给上层的调用函数,看看那里不能处理。
c.如果在最外层(全局“main”)还是没有找打的话,解释器就会退出,同时打印出traceback以便让用户找出错误产生的原因
注意:虽然大多数错误会导致异常,但一个异常不一定代表错误。有时候他们只是一个警告,有时候他们可能是一个终止信号,比如退出循环等。
1 #!/usr/bin/python 2 #coding:utf8 3 4 filename = raw_input(‘请输入你要操作的文件:‘) 5 try: 6 f = open(filename) 7 print hello 8 except IOError,msg: 9 print "你指定的文件不存在" 10 except NameError,msg: 11 print "内部变量调用错误"
12 finally: 无论异常代码会不会被执行,finally下的语句都会被执行都会被执行
13 f.close()
3)finally子句
python提供try-finally子句用来表述这样的情况:我们不关心扑抓到是什么错误,无论错误是不是发生,这些代码“必须”运行,比如文件关闭,释放锁,把数据库链接还给连接池等。比如:
4)raise抛出异常
到目前为止,我们只讨论了如何扑捉异常,那么如何抛出异常呢?
1 #!/usr/bin/python 2 #coding:utf8 3 4 filename = raw_input(‘请输入你要操作的文件:‘) 5 try: 6 f = open(filename) 7 print hello 8 except IOError,msg: 9 print "你指定的文件不存在" 10 except NameError,msg: 11 print "内部变量调用错误" 12 finally: 13 try: 在异常当中我们还可以再嵌套异常 14 f.close() 15 except NameError,msg: 16 pass 17 18 if filename == "hello": 19 raise TypeError("nothing!!!!")
第六节 Mysql数据库模块
>>> import MySQLdb
>>> conn = MySQLdb.connect(user=‘root‘,passwd=‘‘,host=‘localhost‘)
>>> cur = conn.cursor() 创建一个游标保存到cur这个对象中
>>> conn.select_db(‘hy_db‘) 连接到一个库中 >>> cur.execute("insert into hy_tb(name,age,university) value(‘aa‘,22,‘xiyou‘)") 1L 向一张表中插入一条记录 mysql> select * from hy_tb; +------+------+------------+ | name | age | university | +------+------+------------+ | hy | 24 | xiyou | | milo | 25 | zhongshan | +------+------+------------+ 2 rows in set (0.00 sec) mysql> select * from hy_tb; +------+------+------------+ | name | age | university | +------+------+------------+ | hy | 24 | xiyou | | milo | 25 | zhongshan |
| aa | 22 | xiyou | 我们可以看一下这个记录已经被插入了
+------+------+------------+
>>> sqli = "insert into hy_tb(name,age,university) value(%s,%s,%s)"
>>> cur.execute(sqli,(‘csvt‘,5,‘hello‘)) 我们通过上面定义,再次插入的时候就不需要那么麻烦另外
1L
mysql> select * from hy_tb; +------+------+------------+ | name | age | university | +------+------+------------+ | hy | 24 | xiyou | | milo | 25 | zhongshan | | aa | 22 | xiyou | | csvt | 5 | hello | +------+------+------------+ >>> sqlim = "insert into hy_tb(name,age,university) values(%s,%s,%s)" 一次插入多条值 >>> cur.executemany(sqlim,[(‘vt‘,5,‘hello‘),(‘c‘,1,‘s‘),(‘s‘,2,‘m‘)]) 注意函数 3L >>> cur.execute(‘delete from hy_tb where age=2‘) 我们可以删除多条记录 1L >>> cur.execute(‘delete from hy_tb where age=1‘) 1L
在数据库里面查看的时候我们的age=1和age=2的数据就没有了
>>> cur.execute("update hy_tb set name=‘xyt‘ where age=22") 修改里面的一条记录 1L >>> cur.execute(‘select * from hy_tb‘) 实现查询 5L >>> cur.fetchone() 这样每次只能顺序的查询到一条记录 (‘hy‘, 24L, ‘xiyou‘) >>> cur.fetchone() (‘milo‘, 25L, ‘zhongshan‘)
>>> cur.scroll(0,‘absolute‘) 使用scroll来定位移动的位置
>>> cur.fetchone() (‘hy‘, 24L, ‘xiyou‘) >>> cur.fetchmany(5) 一次取多条记录 ((‘xyt‘, 22L, ‘xiyou‘), (‘csvt‘, 5L, ‘hello‘), (‘vt‘, 5L, ‘hello‘)) >>> cur.scroll(0,‘absolute‘) 在这里我们将指针移动到表头 >>> cur.fetchmany(5) ((‘hy‘, 24L, ‘xiyou‘), (‘milo‘, 25L, ‘zhongshan‘), (‘xyt‘, 22L, ‘xiyou‘), (‘csvt‘, 5L, ‘hello‘), (‘vt‘, 5L, ‘hello‘)) >>> cur.fetchmany(cur.execute("select * from hy_tb")) 我们在查询的时候想直接显示出来 ((‘hy‘, 24L, ‘xiyou‘), (‘milo‘, 25L, ‘zhongshan‘), (‘xyt‘, 22L, ‘xiyou‘), (‘csvt‘, 5L, ‘hello‘), (‘vt‘, 5L, ‘hello‘)) >>> cur.close() 增删改查都执行完了,我们需要关闭,先关闭游标
>>> conn.close() 然后在关闭连接
第七节 面向对象编程之类和对象
python它将所有的事物都看做是对象
1)类和对象
面向过程和面向对象的编程
面向过程的编程:函数式编程,C程序等
面向对象的编程;C++,java,Python等
类和对象:是面向对象中的两个重要概念
类:是对象事物的抽象,比如:汽车模型
对象:是类的一个实例,比如:QQ轿车,大客车
范例说明:
汽车模型可以对汽车的特征和行为进行抽象,然后可以实例化为一台真实的汽车视体出来。
2)python类定义
python类的定义:
使用class关键字定义一个类,并且类名的首字母要大写;
当程序员需要创建的类型不能用简单类型表示时就需要创建类;
类把需要的变量和函数组合在一起,这样包含也称之为“封装”。
python类的结构
>>>class 类名:
... 成员变量
... 成员函数
...
>>> class Test: ... first = 123 ... second = 456 ... def f(self): ... return ‘test‘ ...
>>> 这样我们就定义好了一个类
在类的方法中至少有一个参数self
>>> hy = Test() 我们去使用这个类 >>> hy.f() ‘test‘ >>> hy.first 同时也可以查看里面的属性 123
对象的创建:
创建对象的过程称之为实例化;当一个对象被创建后,包含三个方面的特性:对象的句柄、属性和方法。
句柄用于区分不同的对象
对象的属性和方法与类中的成员变量和成员函数对应
>>> if __name__ == "__main__":
... myClass1 = MyClass() #创建类的一个实例(对象)
...