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+"")

 

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()

Python学习笔记09的更多相关文章

  1. Python学习笔记,day5

    Python学习笔记,day5 一.time & datetime模块 import本质为将要导入的模块,先解释一遍 #_*_coding:utf-8_*_ __author__ = 'Ale ...

  2. 机器学习实战(Machine Learning in Action)学习笔记————09.利用PCA简化数据

    机器学习实战(Machine Learning in Action)学习笔记————09.利用PCA简化数据 关键字:PCA.主成分分析.降维作者:米仓山下时间:2018-11-15机器学习实战(Ma ...

  3. python 学习笔记 13 -- 经常使用的时间模块之time

    Python 没有包括相应日期和时间的内置类型.只是提供了3个相应的模块,能够採用多种表示管理日期和时间值: *    time 模块由底层C库提供与时间相关的函数.它包括一些函数用于获取时钟时间和处 ...

  4. [Python学习笔记]调试

    编码占了编程工作量的90%,调试占了另外90%,这是一个流传着的笑话.调试在编程中占有很大的分量,即使专业的程序员也一直在制造缺陷. 抛出异常 抛出异常相当于是说:"停止运行这个函数中的代码 ...

  5. [Python学习笔记]正则表达式总结

    常用缩写字符及其含义表格查询 缩写字符分类 含义 \d 0-9的任意数字 \D 除0-9的数字以外的任何字符 \w 任何字母.数字或下划线字符(可以认为是匹配"单词"字符) \W ...

  6. python学习笔记整理——字典

    python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...

  7. VS2013中Python学习笔记[Django Web的第一个网页]

    前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环 ...

  8. python学习笔记之module && package

    个人总结: import module,module就是文件名,导入那个python文件 import package,package就是一个文件夹,导入的文件夹下有一个__init__.py的文件, ...

  9. python学习笔记(六)文件夹遍历,异常处理

    python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...

随机推荐

  1. Runtime.getRuntime().exec()

    Runtime.getRuntime()返回当前应用程序的Runtime对象,该对象 的exec()方法指示Java虚拟机创建一个子进程执行指定的可执行程序,并返回与该子进程对应的Process对象实 ...

  2. Swift - 2.3的代码到3.0的转变

    分享一下学习新语法的技巧:用Xcode8打开自己的Swift2.3的项目,选择Edit->Convert->To Current Swift Syntax- 让Xcode帮我们把Swift ...

  3. python以指定宽度及格式输出字符串

  4. Loadrunner之HTTP接口测试脚本实例

    接口测试的原理是通过测试程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文结果与预期结果进行比对的过程,接口测试可以通过Jav ...

  5. kvm 下运行的 WINWS7磁盘空间不足 增加磁盘 实战(这个有问题,还未解决)

    创建一个新硬盘: [root@NB vhost]# qemu-img create -f qcow2 add_win_desk.img 5G Formatting encryption=off clu ...

  6. jQuery Moblie 学习之page、button、theme、panel、listview、controlgroup、navbar等(一)

    1.jQTouch jQTouch与jQuery Moblie十分相似,也是一个jQuery插件,同样也支持HTML页面标签驱动,实现移动设备视图切换效果.不同的是它是专为WebKit内核的浏览器打造 ...

  7. 无废话ExtJs 入门教程十一[下拉列表:Combobox]

    无废话ExtJs 入门教程十一[下拉列表:Combobox] extjs技术交流,欢迎加群(201926085) 继上一节内容,我们在表单里加了个一个下拉列表: 1.代码如下: 1 <!DOCT ...

  8. Linq To Sql中实现Left Join与Inner Join使用Linq语法与lambda表达式

    当前有两个表,sgroup与sgroupuser,两者通过gKey关联,而sgroup表记录的是组,而sgroupuser记录是组中的用户,因此在sgroupuser中不一定有数据.需要使用Left ...

  9. 二、activity与Intent

    (一) 多个activity之间的跳转(无值传递) 第一步:创建activity(其实就是jave文件),并进行注册 在AndroidManifest.xml中 <activity androi ...

  10. android 入门-关键词介绍

    1.@SuppressLint("HandlerLeak") 2.synchronized详解 http://www.cnblogs.com/GnagWang/archive/20 ...