Eclipse和PyDev搭建python开发环境
1.1总体目标
本文档作为python学习者的入门教程,通过本教程可以了解python用途、语法、在实际工作中的应用。
Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python是完全面向对象的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载、派生、多继承,有益于增强源代码的复用性。
Python在执行时,首先会将.py文件中的源代码编译成Python的bytecode(字节码),然后再由Python Virtual Machine(Python虚拟机)来执行这些编译好的byte code。这种机制的基本思想跟Java,.NET是一致的。
1.2读者对象
本文档供以下相关人员阅览:
参与软件系统开发的开发、测试、运维人员。
1.3参考文档
2.环境安装和配置
2.1下载软件
32位JDK6开发包
http://www.oracle.com/technetwork/java/javase/downloads/jdk6-jsp-136632.html |
32位(与jdk6位数统一)Eclipse
http://www.eclipse.org/downloads/packages/eclipse-ide-java-developers/heliossr1 |
python2.7下载地址
PyDev软件(可以下载,也可以在线安装)
注意:下载的软件与操作系统和电脑的位数统一即可。
如一种搭配方式:
JDK 6 U17 64BIT for windows Python 2.7 Eclipse 3.5.1 64bit for Windows Pydev plug-in for Eclipse |
2.2安装JDK6
一步步安装即可。有点安装完需要配置环境变量,有的不需要。
2.3安装eclipse
绿色软件,解压即可
2.4安装python
一步步安装即可,注意环境变量
2.5给eclipse安装pydev插件
两种方式:
1.直接下载zip包
2.通过Eclipse自动更新PyDev。
第一种方式:但是,据说通过zip包安装可能会有不兼容的风险,我Eclipse为3.5版本,下载了个1.6.3.2010100513.zip(6.6 MB)
解压后,将压缩包中的两个文件夹放置在Eclipse目录dropins文件夹下即可。
运行很顺利,具体配置请参考官方文档。
启动Eclipse>Preferences,在Preferences窗口左侧菜单,选择InstallUpdate/Availabe Software Site:
点击Add,增加一个更新站点Name:Pydev Location:http://www.pydev.org/updates,然后确认OK:
返回Preferences界面,可以看到已经增加了更新站点,确认OK:
在Eclipse菜单栏点击Help>Install New Software…进入Install界面,在Work with:下拉框选择加入的Pydev站点,点Next下一步:
Install界面列出将安装的插件,继续Next,然后同意协议,点OK开始安装:
安装完毕后,提示重启Eclipse,确认重启.
2.6配置pydev插件
重启Eclipse后,再进入Preferences界面,在左侧菜单栏,选择Pydev>Interpreter-Python进行Python解释器的配置。如果操作系统已经安装了Python,但是点击Autoconfig仍然找不到的话,需要手工添加。点击New…。在Select Interpretor界面中输入解释器名和解释器Python.exe的路径,我装的是Python2.7,路径在D:\Dev\python\python.exe下。
2.7测试python语言的开发
在Eclipse主界面点击File>New>Project…
在工程向导中,选择工程类型Pydev>PydevProject:
如果工程创建后不是在Pydev视图下,可以在Eclipse主界面菜单栏中点击Window>OpenPerspective>Other… ,选择Pydev视图。
在工程中新建一个Python Package(包),右键点击src, New>PydevPackage,选择源文件路径及输入包名:
在_init_.py,输入print (“Hello World”),按F9即可看到输出结果,说明开发环境安装成功!
在/Pydev/src/com/siz/python目录上点击”Pydev Package”,对应的name输入HelloWorld,如图:
2.编写HelloWorld.py程序
|
运行结果:
Hello world!!
3. python基本概念
Python的设计目标之一是让代码具备高度的可阅读性。它设计时尽量使用其它语言经常使用的标点符号和英文单字,让代码看起来整洁美观。它不像其他的静态语言如C、Pascal那样需要重复书写声明语句,也不像它们的语法那样经常有特殊情况和惊喜。
缩进
Python开发者有意让违反了缩进规则的程序不能通过编译,以此来强制程序员养成良好的编程习惯。并且Python语言利用缩进表示语句块的开始和退出(Off-side规则),而非使用花括号或者某种关键字。增加缩进表示语句块的开始,而减少缩进则表示语句块的退出。缩进成为了语法的一部分。例如if语句:
|
根据PEP的规定,必须使用4个空格来表示每级缩进(不清楚4个空格的规定如何,在实际编写中可以自定义空格数,但是要满足每级缩进间空格数相等)。使用Tab字符和其它数目的空格虽然都可以编译通过,但不符合编码规范。支持Tab字符和其它数目的空格仅仅是为兼容很旧的的Python程序和某些有问题的编辑程序。
3.1注释
|
3.2缩进
python最有特色的地方就是他的缩进,而且是强制缩进。
无缩进出现编译错误
缩进程序正常
缩进用在函数定义,if ,for等语句的子语句中。缩束,如函数结束,if语句结束等等。
不要混合使用制表符(TAB)和空格(Space)来缩进。
3.3字符串
python中可以使用单引号(')和双引号(")来表示字符串,这两者是完全等
同的。
|
3.4变量、运算符与表达式
3.4.1变量
python中的变量不需要声明类型的,你直接使用=号赋值就可以了。变量可以是数字, 字符串, 布尔值 (True,Flase,注意大小写), 列表, 字典等类型。
3.4.2运算符与它们的用法
|
3.5控制语句
if语句,当条件成立时运行语句块。经常与else, elif(相当于else if)配合使用。
for语句,遍历列表、字符串、字典、集合等迭代器,依次处理迭代器中的每个元素。
while语句,当条件为真时,循环运行语句块。
try语句。与except,finally配合使用处理在程序运行中出现的异常情况。
class语句。用于定义类型。
def语句。用于定义函数和类型的方法。
pass语句。表示此行为空,不运行任何操作。
assert语句。用于程序调适阶段时测试运行条件是否满足。
with语句。Python2.6以后定义的语法,在一个场景中运行语句块。比如,运行语句块前加密,然后在语句块运行退出后解密。
yield语句。在迭代器函数内使用,用于返回一个元素。自从Python 2.5版本以后。这个语句变成一个运算符。
raise语句。制造一个错误。
import语句。导入一个模块或包。
fromimport语句。从包导入模块或从模块导入某个对象。
importas语句。将导入的对象赋值给一个变量。
in语句。判断一个对象是否在一个字符串/列表/元组里。
if语句
条件执行满足条件才执行,使用 if.... else....:语句。
|
循环执行 for... in...
|
注意:
这里使用了一个内置函数 range().
range(起始值,终止值,步长)
起始值缺省是 0,可以不写
步长值缺省是 1,可以不写
终止值是采用小于,而不是小于等于,所以是满足条件的是不包括终止值
条件表达式语句...
格式:
while expression:
suite_to_repea
while循环的 suite_to_repeat子句会一直循环执行,直到 expression值为布尔假.这种
类型的循环机制常常用在计数循环中,请参见例子.
|
While语句...
|
break语句...
具体内容可以参考while语句中案例 |
continue语句...
类似Java中的continue,这里不再描述。 |
pass语句...
|
try….catch语句...
格式:
try:
xxxxx
except Exception1[, reason1]:
xxxxx
finally:
xxxxx
x =2;
y =0;
while(True):
try:
z = x/y;
print z;
except Exception,e:
print"except-----",e
finally:
print"finally----"
break;
'''
输出结果:
except----- integer division or modulo by zero
finally----
'''
3.6函数
函数是面向过程编程的重要组成部份,要没有函数,代码的可读性和可重用性上
都不会很好。函数就是将一段逻辑相对独立,功能相对单一,又会在多处使用的代码,写成一函数,再需要时进行调用,而不需要在每个地方都写一大堆重复代码。
格式:
def函数名(参数,参数):
实现语句
return …
注意:
1参数,和 return语句都不是必须的
2缩进需要注意
3局部变量
函数内部使用的变量,不影响外部的变量,即使变量同名。
4全局变量
全局变量就是在所以函数外部定义的变量。函数内部可以使用全局变量, 但要使
用 global声明。
|
3.7常见的内置函数
len([string])
用来计算字符串,列表等对像的长度。
|
range()详见上文
str()
将对像转化成字符串
|
3.8容器
容器就是用来存放一些对像的数据结构。根据使用方式的不同,python提供了列表(List),元组(trupe),字典(dict)
3.8.1列表
用来动态的存放对像,可以插入,删除,更新。使用[ ]来给表示,看上去像 c的数组,用起来像 java的 list(不是很准确,更像 vector,不做过多解释)
格式:
变量 a = [ ] #空的列表
变量 b =[1,3,4,5,'iloveyou'] #有值的列表, 元素可以是不同的类型
|
3.8.2字典
字典就像是 java中的 map,根据一个键来对应一个对像。
定义:
变量 a={}
变量a={key1:value1,key2:value2}
|
4.文件操作
文件操作可以使用内置的函数 open来进行。
格式:
open(文件名[,mode])返回一个文件对像。
|
文件对像的方法:
1. file.read(size):读取文件的 size个字节.返回一个 string 对象.如果没有设 置 size,则读取整个文件。 2.file.readline():读取一行,返回一个 string 对象,如果返回的内容为空,则 说明文件结束 Eof。 3.file.readlines():读取所有的行,返回一个 list 4.file.write(buffer):写 buffer 的内容到文件 5.file.flush()强制写缓冲区的内容到文件 6.file.close()关闭文件
|
文件对象的属性:
file.name:文件名 file.mode:文件打开的模式 |
实战演练
输出一个文本文件内容的程序。
|
5. Python操作Oracle数据库
5.1 DB-AP I 2 . 0 规范
python的 DB-API和 java的jdbc类似,都是一个规范.定义了 python中如何操
作数据库的数据,然后由不同的数据库去实现不同的模块(jdbc里叫驱动).
参考规范http://www.python.org/dev/peps/pep-0249/对 DB_API2.0做个介绍.
5.1.1模块接口 connect()方法
所有符合 DB-API 2.0规范的模块都提供了connect()方法,用来连接数据库,返
回一个数据库连接对象 Connection.
格式:connect(参数 1,参数 2,..)
5.1.2Connection对象
.close()
关闭与数据库的连接,如果有数据没有提交,这部分数据就撤销掉。
.commit()
提交该连接的所有没有提交的事务.如果数据库支持自动提交,哪么最初应该是关掉这个功能的.数据库模块可以提供方法来打开自动提交功能.
.rollback()
撤销该连接
.cursor()
返回一个数据库游标,用来执行具体的数据库操作.
5.2 ora cle ( cx_Oracle)
5.2.1cx_Oralce安装
Python 连接Oracle 数据库,需要使用cx_Oracle 包。
下载地址:http://sourceforge.net/projects/cx-oracle/files/5.1.1/
Window安装
cx_Oracle版本:cx_Oracle-5.1.1-10g.win32-py2.7.msi 数据库版本:Oracle10g Python版本:3.3 |
cx_Oralce是 pyton的oracle模块,使用前需要安装 oracle的 instantclient.
安装:instantclient推荐使用 10.2,可以使用字符串来连接数据库,不需要建立 dsn.
在 windows上直接解压,然后将目录加入到环境变量的 path中即可.
Python连接Oracle需要安装instantclient_10_2并配置环境变量:
Centos安装
cx_Oracle版本:cx_Oracle-5.1.1-10g-py27-1.i386.rpm 数据库版本:Oracle10g Python版本:2.7 |
备注:下载的时候,注意版本,对不同版本的Oracle 和平台,都有不同的cx_Oracle。
5.2.2连接Oracle数据库
格式:用户名/密码@主机 ip:port/实例名
|
或者
|
实例:
|
数据库:
5.2.3Python操作Oracle
Python操作Oracle程序:
|
执行结果:
|
数据库结果验证:
|
6.python常用内置函数
6.1创建目录
创建目录程序代码
|
结果验证
6.2join函数
格式:string.join(list,seq);
参数:list分割集合
seq分割符号
使用“分号”连接集合中内容:
|
使用?连接集合中内容:
|
6.2Queue
队列实例分别有以下操作方法:
Queue.get([block[, timeout]])获取队列,timeout等待时间
Queue.put(item)写入队列,timeout等待时间
Queue.join()实际上意味着等到队列为空,再执行别的操作
join()保持阻塞状态,直到处理了队列中的所有项目为止
7.常见问题
问题一、python遇到syntaxerror: non-ascii character '/xd6' in file
解决方案:文件开头增加 # -*- coding: utf-8 -*-
案例:代码内容如
|
问题二、安装cx_Oracle,在python里面import cx_Oracle,提示错误。
操作步骤:执行python.exe
>>>import cx_Oracle
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
import cx_Oracle
ImportError: DLL load failed: 找不到指定的模块。
解决方案:复制oci.dll到$python_home (比如D:\Dev\python),解决。重新打开后如图:
问题三、Oracle数据库服务端中文查询正常,但是sqlplus客户端乱码
解决方案:配置系统变量
1. 查服务器编码: 3.重新连接sqlplus,查看数据: 显示正常. 4.PL/SQL Developer设置并重新连接: 在pl/sql developer的菜单->tools->preferences->user interface->fonts 中修改为中文字体 重新连接即可。 |
|