python第一部分:Eclipse和PyDev搭建python开发环境
  cflB5lsEmohO 2023年11月02日 66 0


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文件夹下即可。

python第一部分:Eclipse和PyDev搭建python开发环境_缩进

python第一部分:Eclipse和PyDev搭建python开发环境_Python_02

 

运行很顺利,具体配置请参考官方文档

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

python第一部分:Eclipse和PyDev搭建python开发环境_python_03

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即可看到输出结果,说明开发环境安装成功!

python第一部分:Eclipse和PyDev搭建python开发环境_Python_04

 

在/Pydev/src/com/siz/python目录上点击”Pydev Package”,对应的name输入HelloWorld,如图:

python第一部分:Eclipse和PyDev搭建python开发环境_Python_05

 

2.编写HelloWorld.py程序

'''
Created on 2014-4-21
 
@author: ShenFuLi
'''
print("Hello world!!");

运行结果:

Hello world!!

3. python基本概念

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

缩进

Python开发者有意让违反了缩进规则的程序不能通过编译,以此来强制程序员养成良好的编程习惯。并且Python语言利用缩进表示语句块的开始和退出(Off-side规则),而非使用花括号或者某种关键字。增加缩进表示语句块的开始,而减少缩进则表示语句块的退出。缩进成为了语法的一部分。例如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最有特色的地方就是他的缩进,而且是强制缩进。

无缩进出现编译错误

python第一部分:Eclipse和PyDev搭建python开发环境_缩进_06

 

缩进程序正常

python第一部分:Eclipse和PyDev搭建python开发环境_Python_07

 

缩进用在函数定义,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并配置环境变量:

python第一部分:Eclipse和PyDev搭建python开发环境_Python_08

 

python第一部分:Eclipse和PyDev搭建python开发环境_缩进_09

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/实例名

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);
   #用户名/密码@主机 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
'''

 

数据库:

python第一部分:Eclipse和PyDev搭建python开发环境_Python_10

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

 

结果验证

python第一部分:Eclipse和PyDev搭建python开发环境_Python_11

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),解决。重新打开后如图:

python第一部分:Eclipse和PyDev搭建python开发环境_缩进_12

问题三、Oracle数据库服务端中文查询正常,但是sqlplus客户端乱码

解决方案:配置系统变量

1.      查服务器编码:
执行SQL语法:
select * from v$nls_parameters;
也可以参照/home/oracle/.bash_profile相关语言设置.
可以看到我的相关设置是:
LANG=zh_CN.GBK
NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
2.设置本地客户端编码:
进入我的电脑,属性,高级,环境变量,添加2项:
LANG=zh_CN.GBK
NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
如图:

python第一部分:Eclipse和PyDev搭建python开发环境_Python_13

python第一部分:Eclipse和PyDev搭建python开发环境_python_14


3.重新连接sqlplus,查看数据:

显示正常.

4.PL/SQL Developer设置并重新连接:

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

重新连接即可。

 

 

 

 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
cflB5lsEmohO