Eclipse和PyDev搭建python开发环境

时间:2022-04-28 09:09:30


 

 

 

 

 

 

 

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下载地址

https://www.python.org/download/releases/2.7

PyDev软件(能够下载,也能够在线安装)

http://www.pydev.org/updates

注意:下载的软件与操作系统和电脑的位数统一就可以。

如一种搭配方式:

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)

(http://sourceforge.net/projects/pydev/files/pydev/Pydev%201.6.3/org.python.pydev.feature-1.6.3.2010100513.zip/download)

解压后,将压缩包中的两个目录放置在Eclipse目录dropins目录下就可以。

Eclipse和PyDev搭建python开发环境

Eclipse和PyDev搭建python开发环境

执行非常顺利,详细配置请參考官方文档

启动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下。

Eclipse和PyDev搭建python开发环境

2.7測试python语言的开发

在Eclipse主界面点击File>New>Project…

在project向导中,选择project类型Pydev>PydevProject:

假设project创建后不是在Pydev视图下,能够在Eclipse主界面菜单条中点击Window>OpenPerspective>Other…
,选择Pydev视图。

在project中新建一个Python Package(包),右键点击src, New>PydevPackage,选择源文件路径及输入包名:

在_init_.py,输入print (“Hello World”),按F9就可以看到输出结果,说明开发环境成功安装!

Eclipse和PyDev搭建python开发环境

在/Pydev/src/com/siz/python文件夹上点击”Pydev Package”,相应的name输入HelloWorld,如图:

Eclipse和PyDev搭建python开发环境

2.编写HelloWorld.py程序

'''

Created on 2014-4-21

@author: ShenFuLi

'''

print("Hello
world!!"
);

执行结果:

Hello world!!

3. python基本概念

Python的设计目标之中的一个是让代码具备高度的可阅读性。它设计时尽量使用其他语言常常使用的标点符号和英文单字,让代码看起来整洁美观。它不像其他的静态语言如C、Pascal那样须要反复书写声明语句,也不像它们的语法那样常常有特殊情况和惊喜。

缩进

Python开发人员有意让违反了缩进规则的程序不能通过编译,以此来强制程序猿养成良好的编程习惯。而且Python语言利用缩进表示语句块的開始和退出(Off-side规则),而非使用花括号或者某种keyword。添加�缩进表示语句块的開始,而降低缩进则表示语句块的退出。缩进成为了语法的一部分。比如if语句:

ifage<21:

print("你不能买酒。")

print("只是你能买口香糖。")

print("这句话处於if语句块的外面。")

依据PEP的规定,必须使用4个空格来表示每级缩进(不清楚4个空格的规定怎样,在实际编写中能够自己定义空格数,可是要满足每级缩进间空格数相等)。使用Tab字符和其他数目的空格尽管都能够编译通过,但不符合编码规范。支持Tab字符和其他数目的空格不过为兼容非常旧的的Python程序和某些有问题的编辑程序。

3.1凝视

'''

Created on 2014-4-22

@author: ShenFuli

'''

#单行的凝视是以#開始的

print("单行的凝视是以#開始的.");

'''

   三引號字符串在python中是用来表示多行的字符串的

 name:shenfl

 age:20

'''

print("name:shenfl,age:20");

3.2缩进

python最有特色的地方就是他的缩进,并且是强制缩进。

无缩进出现编译错误

Eclipse和PyDev搭建python开发环境

缩进程序正常

Eclipse和PyDev搭建python开发环境

缩进用在函数定义,if ,for等语句的子语句中。缩束,如函数结束,if语句结束等等。

不要混合使用制表符(TAB)和空格(Space)来缩进。

3.3字符串

python中能够使用单引號(')和双引號(")来表示字符串,这两者是全然等

同的。

'''

Created on 2014-4-22

@author: ShenFuLi

@description

   python中能够使用单引號(')和双引號(")来表示字符串,这两者是全然等同的。

'''

str1 ="双引號字符串 ";

print(str1);

str2 ='单引號字符串
'
;

print(str2);

3.4变量、运算符与表达式

3.4.1变量

python中的变量不须要声明类型的,你直接使用=号赋值就能够了。变量能够是数字,
字符串, 布尔值 (True,Flase,注意大写和小写), 列表, 字典等类型。

3.4.2运算符与它们的使用方法

'''

Created on 2014-4-22

@author: ShenFuLi

@Description运算符与它们的使用方法

字符串str转换成int:
int_value = int(str_value)

int转换成字符串str:
str_value = str(int_value)

int ->unicode:unicode(int_value)

unicode ->int:int(unicode_value)

str ->unicode:unicode(str_value)

unicode ->str:str(unicode_value)

int ->str:str(int_value)

str ->int:int(str_value)

'''

print("两个对象相加:
3 + 5 = "
+ str(3
+ 5));#output
the 8

print("两个数详进行减法:
8 - 3 = "
+ str(8
- 3));#output
the result 5

print("两个对象相乘:
3 + 5 = "
+ str(3
* 5));#output
the result 8

print("取整:
4//3 = "
+ str(4//3));#output
the result 1

print("除:
4/3 = "
+ str(4/3));#output
the result 1.3333333333333333

print("取模:
5%3 = "
+ str(5%3));#output
the result 2

'''

   对象是否相等

'''

print(2==2);#True

print('2'=='2');#True

print(1!=2);#True

x =True;

print(not
x);#False

a =True;

b =False;

print(aand
b);#False

print(aor
b);#True

#表达式:表达式就是将由变量,运算符等结合起来用来表达一种含义的式子。

t1 =4;

t2 =6;

print((t1 + t2)/2);#5.0

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....:语句。

#能够通过切换变量来验证每一种情况

x =3;

if(x==1):

print("output
the result is 1"
);

elif(x==2):

print("out
the result is 2"
)

else:

print
("I do not know!");

循环运行 for...
in...

'''

Created on 2014-4-22

@author: ShenFuLi

@description:

循环运行就是满足条件反复运行。使用最多的是 for .....in ...

注意:

   这里使用了一个内置函数
range().

   range(起始值,终止值,步长)

   起始值缺省是
0,能够不写

   步长值缺省是
1,能够不写

   终止值是採用小于,而不是小于等于,所以是满足条件的是不包含终止值

'''

 

'''

   输出结果:

   0

   1

   2

   3

   4

'''

for xin
range(5):

print(x);

print("------------------------")

'''

   输出结果:

       8

       7

       6

'''

for xin
range(8,5,-1):

print(x);

注意:

这里使用了一个内置函数 range().

range(起始值,终止值,步长)

起始值缺省是 0,能够不写

步长值缺省是 1,能够不写

终止值是採用小于,而不是小于等于,所以是满足条件的是不包含终止值

条件表达式语句...

格式:

while expression:

suite_to_repea

while循环的
suite_to_repeat子句会一直循环运行,直到
expression值为布尔假.这样的

类型的循环机制经常常使用在计数循环中,请參见样例.

#三元运算符

import sys

x =10;

y =20;

z = xif(x<y)else
y;

print(z);#output
the result is 10

While语句...

'''

   输出结果:

   this count: 0

   this count: 1

   this count: 2

   this count: 3

'''

count =0;

while(count<5):

print"this
count:"
,count;

if(count==3):

break;

count+=1;

break语句...

详细内容能够參考while语句中案例

continue语句...

类似Java中的continue,这里不再描写叙述。

pass语句...

#Python提供了
pass语句,它不做不论什么事情

#这种代码结构在开发和调试时非常实用,由于编写代码的时候你可能要先把结构定下来

#在异常处理中也被经经常使用到

deffoo_func():

pass;

deffoo_func2():

pass

if __name__ =="__main__":

print("---main---")

foo_func();

foo_func2();

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声明。

'''

Created on 2014-4-22

@author: ShenFuLi

'''

name ="zhengwenjie";

#定义函数

defsayHello(params):

global
name;#函数能够使用全局变量,可是要global声明

print("name
= "
+name);

print("您好,"
+ params);

id =1000;

defprintId():

global
id;

print(id);

id = id +1;

#定义主函数入口

if__name__=="__main__":

sayHello("沈福利");#output
the result is 您好,沈福利

#main函数能够使用全局变量

print("name
= "
+ name);

printId();#1000

printId();#1001

3.7常见的内置函数

len([string])

用来计算字符串,列表等对像的长度。

a ="love";

print(len(a));#ouput
the result is 4

range()详见上文

str()

将对像转化成字符串

b =1000;

print(str(1000));#output
the result is 1000

3.8容器

容器就是用来存放一些对像的数据结构。依据使用方式的不同,python提供了列表(List),元组(trupe),字典(dict)

3.8.1列表

用来动态的存放对像,能够插入,删除,更新。使用[ ]来给表示,看上去像
c的数组,用起来像 java的
list(不是非常准确,更像 vector,不做过多解释)

格式:

变量 a = [ ] #空的列表

变量 b =[1,3,4,5,'iloveyou'] #有值的列表, 元素能够是不同的类型

#定义空的列表

a = [];

print(a);#输出结果为[]

print(len(a));#输出结果为0

a.insert(0,2);

a.insert(1,4);

a.insert(2,8);

print("---------------------")

#索引元素:a.index(元素,開始,结束)
#返回匹配到的第一个元素的索引。

a_value = a.index(4,0,len(a)
);

print("a_value:"
+ str(a_value));

for vin
a:

print(v);

3.8.2字典

字典就像是 java中的
map,依据一个键来相应一个对像。

定义:

变量 a={}

变量a={key1:value1,key2:value2}

#定义字典

#定义空的字典

b = {};

print(len(b));

#定义有数据的字典

b = {"x1":"hello","x2":"world","x3":"1000"}

#加入�一个key/value到数据字典中

b["x4"]
= "x4";

#输出数据字典中的数据

for xin
b.items():

'''

           输出结果为:

   ('x3', 1000)

   ('x2', 'world')

   ('x1', 'hello')

   ('x4', 'x4')

   '''

print(x);

for key,valuein
b.items():

'''

      输出结果为:

       key:x2, value:world

       key:x3, value:1000

       key:x1, value:hello

       key:x4, value:x4

   '''

print("key:"
+ key + ", value:"
+ value);

t2 = b.__contains__("x3");

if(t2 ==True):

print("数据字典中key包括x3")

4.文件操作

文件操作能够使用内置的函数 open来进行。

格式:

open(文件名称[,mode])返回一个文件对像。

"r",读模式

"w",写模式

"r+",读写模式

文件对像的方法:

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:文件打开的模式

实战演练

输出一个文本文件内容的程序。

'''

Created on 2014-4-22

@author: ShenFuLi

@Description :对文件操作

'''

#读取文件,返回文件对象

fileName ="pyFile.txt";

file = open(fileName);

#调用文件方法

files = file.readlines();

for linein
files:

print(line);

file.close();

'''

       输出结果:

       Hello World

   

       welcome

'''

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并配置环境变量:

Eclipse和PyDev搭建python开发环境

Eclipse和PyDev搭建python开发环境

Centos安装

cx_Oracle版本号:cx_Oracle-5.1.1-10g-py27-1.i386.rpm

数据库版本号:Oracle10g

Python版本号:2.7

备注:下载的时候,注意版本号,对不同版本号的Oracle 和平台,都有不同的cx_Oracle。

5.2.2连接Oracle数据库

格式:username/password@主机
ip:port/实例名

db = cx_Oracle.connect('ngves3/asiainfo@192.168.204.135:1521/mydb')

或者

DSN_TNS = cx_Oracle.makedsn(db_host, db_port, db_base);

db = cx_Oracle.connect(db_user, db_pass, DSN_TNS);

实例:

# -*- coding:utf-8 -*-

import cx_Oracle

import sys

db_host ='192.168.204.135'

db_port =1521

db_base ='mydb'

db_user ='ngves3'

db_pass ='asiainfo'

DSN_TNS = cx_Oracle.makedsn(db_host, db_port,
db_base);

db_query ="SELECT U_NO,U_NAME FROM ngves3.T_USER where
u_no='AI001'"

try:

#DSN_TNS:
(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.204.135)(PORT=1521)))(CONNECT_DATA=(SID=mydb)))

print"DSN_TNS:",DSN_TNS

db = cx_Oracle.connect(db_user, db_pass,DSN_TNS);

#username/password@主机
ip:port/实例名

#db
= cx_Oracle.connect('db_user/asiainfo@192.168.204.135:1521/mydb')

cursor = db.cursor();

cursor.execute(db_query);

row = cursor.fetchall();

#定义列表

z = [];

for
xin row:

for
yin x:

sys.stdout.write(str(y)+"
"
);

except Exception, e:

print'db
err'
, e;

finally:

cursor.close();

db.close();

'''

   输出结果:

   AI001 shenfl1

'''

数据库:

Eclipse和PyDev搭建python开发环境

5.2.3Python操作Oracle

Python操作Oracle程序:

# -*- coding:utf-8 -*-

'''

Created on 2014-4-25

@author:Shenfl

@Function:创建一张表,并插入一些数据,在改动当中的部分数据

'''

import cx_Oracle

import os

'''

   @Function:连接数据库

   @param dbname:数据库实例,默认初始数据mydb

'''

defconnectDB(dbname="mydb"):

if(dbname=="mydb"):

conn ="ngves3/asiainfo@192.168.204.135:1521/mydb";

db = cx_Oracle.connect(conn);

return
db;

defcloseDB(db):

db.close();

'''

   @Function:查询数据库

   @param sql:sql语句

          db
数据库对象

'''

defsqlSelect(sql,db):

#include:select

cr=db.cursor();

cr.execute(sql);

rs=cr.fetchall();

cr.close();

return
rs;

'''

   @Function:对数据库进行操作

   @param sql:sql语句

          db
数据库对象

'''

defsqlDML(sql,db):

#include: insert,update,delete

cr=db.cursor()

cr.execute(sql)

cr.close()

db.commit()

'''

   @Function:对数据库进行操作

   @param sql:sql语句

          params:查询參数

          db
数据库对象

'''

defsqlDML2(sql,params,db):

# executedml
with parameters

cr=db.cursor();

cr.execute(sql,params);

cr.close();

db.commit();

'''

   @Function:对数据库进行操作

   @param sql:sql语句

          db
数据库对象

'''

defsqlDDL(sql,db):

#include: create

cr=db.cursor();

cr.execute(sql);

cr.close();

db.commit();

if __name__=='__main__':

print"This
is a testpython program,write byshenfl!\n"
;

os.environ['NLS_LANG']='SIMPLIFIED
CHINESE_CHINA.UTF8'
;

#connect to database

db = connectDB();

#create table

sql_create ="create
table py_test(id number,name varchar2(20),phone number)"
;

try:

#sqlDDL(sql_create,db);

print"create
table success!"

except
Exception ,e:

#the output result is ORA-00955: name
is already used by an existing object

print
e;

# delete data before insert data to table
py_test

sql ="truncate
table py_test"
;

sqlDDL(sql, db);

print("truncate
py_test success!"
)

#insert data to table py_test:方案一

sql ="insert
into py_test(id,name,phone) values(1,'shenfl',110)"
;

sqlDDL(sql, db);

print("方案一:insert
data to table py_test  success!"
)

#insert data to table py_test:方案二

dt=[{'id':2,'name':'zhangsan','phone':138888888888},

{'id':3,'name':'lisi','phone':13888888888},

{'id':4,'name':'shenfl','phone':13888888888}]

sql='insert
into py_test values(:id,:name,:phone)'

for
xin dt:

'''   

                       输出结果:   

           {'phone': 138888888888L, 'id': 2, 'name': 'zhangsan'}

           {'phone': 13888888888L, 'id': 3, 'name': 'lisi'}

           {'phone': 13888888888L, 'id': 4, 'name': 'shenfl'}

       '''

print(x);

sqlDML2(sql,x,db);

print("方案二:
insert data to table py_test success!"
)

#select the result:

sql ="select
id,name,phone from py_test"
;

rs = sqlSelect(sql, db);

print"数据查询结果:"

for
rin rs:

print
r;

#数据操作完成后完成数据库

closeDB(db);

运行结果:

This is a test python program,write by shenfl!

create table success!

truncate py_test success!

方案一:insert data to table py_test success!

{'phone': 138888888888L, 'id': 2, 'name': 'zhangsan'}

{'phone': 13888888888L, 'id': 3, 'name': 'lisi'}

{'phone': 13888888888L, 'id': 4, 'name': 'shenfl'}

方案二: insert data to table py_test success!

数据查询结果:

(1, 'shenfl', 110)

(2, 'zhangsan', 138888888888L)

(3, 'lisi', 13888888888L)

(4, 'shenfl', 13888888888L)

数据库结果验证:

select *from py_test;

ID NAME   PHONE

1  shenfl 110

2  zhangsan   138888888888

3  lisi   13888888888

4  shenfl 13888888888

6.python经常使用内置函数

6.1创建文件夹

创建文件夹程序代码

# -*- coding:utf-8 -*-

'''

Created on 2014-5-14

@author:shenfl

'''

import datetime

import os

ROOT_HISTORY ="";

defnew_dir(dst_dir):

try:

if
os.path.exists(dst_dir):

pass;

else:

#os.mkdir(dst_dir);

os.makedirs(dst_dir);

except:

print"makedir
%s err!"
% dst_dir;

if __name__ =="__main__":

history = ROOT_HISTORY;

format ='%Y-%m-%d
%H:%M:%S'

print"make
new_dir"
,datetime.datetime.now().strftime(format);

dst_dir ="%s/ware.%s"
% (history, datetime.datetime.now().strftime(format))

new_dir("data/html/current");

结果验证

Eclipse和PyDev搭建python开发环境Eclipse和PyDev搭建python开发环境

6.2join函数

格式:string.join(list,seq);

參数:list切割集合

seq切割符号

使用“分号”连接集合中内容:

# -*- coding:utf-8 -*-

import string

words=["aaa","bbb"];

a = string.join(words,";");

print a;#aaa;bbb

使用?连接集合中内容:

b ="?".join(["hello","world"]);

print b;#hello?world

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 -*-

案例:代码内容如

# -*- coding:utf-8 -*-

print("Hello
world!!"
);

print("欢迎来到python世界!!!");

问题二、安装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),解决。又一次打开后如图:

Eclipse和PyDev搭建python开发环境

问题三、Oracle数据库服务端中文查询正常,可是sqlplusclient乱码

解决方式:配置系统变量

1.      查server编码:

运行SQL语法:

select * from v$nls_parameters;

也能够參照/home/oracle/.bash_profile相关语言设置.

能够看到我的相关设置是:

LANG=zh_CN.GBK

NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"

2.设置本地client编码:

进入我的电脑,属性,高级,环境变量,加入�2项:

LANG=zh_CN.GBK

NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"

如图:

Eclipse和PyDev搭建python开发环境

Eclipse和PyDev搭建python开发环境

3.又一次连接sqlplus,查看数据:

显示正常.

4.PL/SQL Developer设置并又一次连接:

在pl/sql developer的菜单->tools->preferences->user
interface->fonts 中改动为中文字体

又一次连接就可以。