Python学习笔记09

 

 

  1. 异常处理

 

参考文章:http://blog.csdn.net/sinchb/article/details/8392827

有异常则执行except子句——类似C#的catch

就是当没有检测到异常的时候,则执行else语句——C#并没有这个分之

finally子句是无论是否检测到异常,都会执行的一段代码——和C#一致

使用raise来抛出异常——类似C#的throw

with语句——类似C#的using

 

try:

...

except exception1:

...

except exception2:
...
except:

...

else:

...

finally:

...

 

  1. import logging
  2. logging.basicConfig(level=logging.DEBUG,
  3.                     format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
  4.                     datefmt='%a, %d %b %Y %H:%M:%S',
  5.                     filename='./log.txt',
  6.                     filemode='a+')
  7.  
  8. try:
  9.     f = open("/root/test.py")
  10.     f.close()
  11. except IOError,e:
  12.     logging.error("%s"% e)
  13. else:
  14.     logging.info("%s"%"no exception caught\n")
  15. #finally:
  16. # logging.info("last")

 

  1. raise "luan tan qing !" #直接抛出异常
  2. assert len("love") != len("like"),'assert can\'t pass!' #断言
  3.  
  4. #使用with块,则会关闭上下文对象
  5. with open('/root/test.py') as f:
  6.     for line in f:
  7.         print line

 

2.MySQL数据库

 

使用标准的DB-API来访问数据库

参考:http://www.cnblogs.com/hongten/p/hongten_python_mysqldb.html

 

2.1创建表

  1. db = MySQLdb.connect("localhost","pzdn","pzdn","testdb" )
  2. print db
  3. cursor = db.cursor()
  4. sql = """CREATE TABLE EMPLOYEE (
  5.          FIRST_NAME CHAR(20) NOT NULL,
  6.          LAST_NAME CHAR(20),
  7.          AGE INT,
  8.          SEX CHAR(1),
  9.          INCOME FLOAT )"""
  10.  
  11. cursor.execute(sql)
  12. db.close()

2.2插入数据

 

  1. import MySQLdb
  2.  
  3. db = MySQLdb.connect("localhost","pzdn","pzdn","testdb" )
  4. print db
  5. cursor = db.cursor()
  6.  
  7. try:
  8.     sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
  9.          LAST_NAME, AGE, SEX, INCOME)
  10.          VALUES ('zhen', 'peng', 20, 'M', 2000)"""
  11.     cursor.execute(sql)
  12.     db.commit()
  13. except:
  14.     db.rollback()
  15. finally:
  16.     db.close()

另外一种形式,传参数:

sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \

LAST_NAME, AGE, SEX, INCOME) \

VALUES ('%s', '%s', '%d', '%c', '%d' )" % \

('zhen', 'peng', 20, 'M', 2000)

 

con.execute('insert into Login values("%s", "%s")' % \

(user_id, password))

 

2.3查询

 

fetchone()

fetchall()

rowcount

  1. import MySQLdb
  2.  
  3. db = MySQLdb.connect("localhost","pzdn","pzdn","testdb" )
  4. print db
  5. cursor = db.cursor()
  6.  
  7. try:
  8.     sql = "SELECT * FROM EMPLOYEE \
  9.        WHERE INCOME > '%d'" % (1000)
  10.  
  11.     cursor.execute(sql)
  12.     result =cursor.fetchall()
  13.     for row in result:
  14.         fname = row[0]
  15.         lname = row[1]
  16.         age = row[2]
  17.         sex = row[3]
  18.         income = row[4]
  19.         print "fname=%s,lname=%s,age=%d,sex=%s,income=%d" % \
  20.              (fname, lname, age, sex, income )
  21. except Exception, e:
  22.     print e.message
  23. finally:
  24.     db.close()

3.文件和目录IO

 

3.1文件打开模式

模式

描述

r

以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。

rb

以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。

r+

打开一个文件用于读写。文件指针将会放在文件的开头。

rb+

以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。

w

打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

wb

以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

w+

打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

wb+

以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

a

打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

ab

以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

a+

打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

ab+

以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

 

常用:r+,w+,a+,其中r+与w+等价。a+为append,w+为覆盖。带有b的,表示读取方式为二进制。

3.2从键盘输入

raw_input("read a line from console:") #read line

input("please ensure the input is python expression") #must be Python expression

3.2文件访问方法

open()

read()

write()

close()

以及os的rename(),remove()

  1. file = open("testfile.txt","r+")
  2. print 'read tens:',file.read(10)
  3. for line in file:
  4.     print line
  5. print 'display the file info:'
  6. print file.mode,file.name
  7.  
  8. file.write("pz is learning the python language!\n")
  9.  
  10. file.close()
  11. print file.closed
  12.  
  13. import os
  14. os.rename(file.name,file.name+"2")

 

3.3目录访问方法

 

这差不多就是Linux的目录管理命令

mkdir()

removedires()

getcwd()

chdir()

rmdir(path)

listdir(path)

import os

dirName = "newdir"

 

os.removedirs(dirName)

os.mkdir(dirName)

print os.getcwd()

os.chdir(dirName)

print os.getcwd()

posted @ 2015-08-12 13:51  _DN  阅读(225)  评论(0编辑  收藏  举报