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. 在MVC的项目中访问静态页面

    MVC在生成项目的时候会生成的WEB-INF底下.这个文件夹下面的文件是受保护的,都会走MVC的流程, 但是我希望在WebContent底下可以使用静态页面, 那么需要进入springmvc-serv ...

  2. Android Tab -- 使用TabWidget、TabHost、TabActivity来实现

    原文地址:http://blog.csdn.net/crazy1235/article/details/42678877 TabActivity在API13之后被fragment替代了,所以不建议使用 ...

  3. ListView优化中ViewHolder要不要定义为static静态内部类?

    给学生讲课的时候,发现存在这个问题,下来百度了下,发现很纠结,涉及到了内部类对外部类的引用,静态类的生命周期等java知识,现总结如下: static class ViewHolder { //定义l ...

  4. Delphi之DLL知识学习4---创建DLL

    下面是在Delphi中创建一个DLL的全过程,你将看到怎样创建一个接口单元,使之可以被其他的应用程序访问.并且将学会怎么把Delphi的窗体加入DLL中. 一.数美分:一个简单的DLL 下面是包含一个 ...

  5. javascript实用技巧,js小知识

    一.js整数的操作 使用|0和~~可以将浮点转成整型且效率方面要比同类的parseInt,Math.round 要快,在处理像素及动画位移等效果的时候会很有用.性能比较见此. var foo = (1 ...

  6. ORA-1461 encountered when generating server alert SMG-3500

    Doc ID 461911.1 Patch 6602742 Applies to: Oracle Database - Enterprise Edition - Version 10.2.0.3 an ...

  7. [SQL]oracle 的to_char、to_number、to_date用法

    关键字: oracle 的to_char.to_number.to_date用法 TO_CHAR 是把日期或数字转换为字符串TO_DATE 是把字符串转换为数据库中得日期类型转换函数TO_NUMBER ...

  8. php获取当前毫秒时间戳

    最近在做一个智能家居项目的后台,需要实时上传用户对智能设备的配置信息到服务器,以便实现同步,因此对于时间的精确度要求比较高,最开始直接是用php的time()函数来获取时间戳,获取的时间精确到秒级别, ...

  9. 国内大学毕业论文 LaTeX 模板集合

    西北工业大学学位论文LaTeX模板 http://code.google.com/p/nwputhesis/ 西北工业大学硕博士论文LaTeX模版 http://code.google.com/p/n ...

  10. 【项目经验】navicat工具 SQLServer数据库迁移MySQL

    新近领了一个任务,就是把SQL Server的数据库迁移到My Sql上,经过查资料,圆满完成任务.分享一下流程. 1.首先,在自己的My Sql数据库上新建一个数据库. 2.打开新建的My Sql数 ...