zoukankan      html  css  js  c++  java
  • Eclipse和PyDev搭建python开发环境

    

     

     

     

     

     

     

     

    Eclipse和PyDev搭建python开发环境


    1.1整体目标

    本文档作为python学习者的新手教程,通过本教程能够了解python用途、语法、在实际工作中的应用。

    Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python是全然面向对象的语言。函数、模块、数字、字符串都是对象。而且全然支持继承、重载、派生、多继承,故意于增强源码的复用性。

    Python在运行时,首先会将.py文件里的源码编译成Pythonbytecode(字节码),然后再由Python Virtual MachinePython虚拟机)来运行这些编译好的byte code。这样的机制的基本思想跟Java.NET是一致的。

     

    1.2读者对象

    本文档供下面相关人员阅览:

    參与软件系统开发的开发、測试、运维人员。

     

    1.3參考文档

    2.环境安装和配置

    2.1下载软件

    32JDK6开发包

    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.5eclipse安装pydev插件

    两种方式:

    1.直接下载zip
    2.
    通过Eclipse自己主动更新PyDev

    第一种方式:可是,据说通过zip包安装可能会有不兼容的风险,我Eclipse3.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>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:Devpythonpython.exe下。

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

     

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

     

    2.编写HelloWorld.py程序

    '''

    Created on 2014-4-21

     

    @author: ShenFuLi

    '''

    print("Hello world!!");

    执行结果:

    Hello world!!

    3. python基本概念

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

    缩进

    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最有特色的地方就是他的缩进,并且是强制缩进。

    无缩进出现编译错误

     

    缩进程序正常

     

    缩进用在函数定义,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,则读取整个文件。

    2file.readline():读取一行,返回一个 string 对象,假设返回的内容为空,则

    说明文件结束 Eof

    3file.readlines():读取全部的行,返回一个 list

    4file.write(buffer):写 buffer 的内容到文件

    5file.flush()强制写缓冲区的内容到文件

    6file.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 javajdbc类似,都是一个规范.定义了 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 pytonoracle模块,使用前须要安装 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数据库

    格式: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

    '''   

     

    数据库:

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

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

     

    结果验证

    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:Devpython),解决。又一次打开后如图:

    问题三、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"
    如图:


    3.
    又一次连接sqlplus,查看数据:
    显示正常.
    4.PL/SQL Developer
    设置并又一次连接:
    pl/sql developer的菜单->tools->preferences->user interface->fonts 中改动为中文字体
    又一次连接就可以。

     

     

     

  • 相关阅读:
    SpringJDBC源码分析记录
    RHEL7使用NAT方式上网
    SQL优化参考
    IDEA引入Gradle工程小记
    OAuth2.0原理与实现
    sudo用法记录
    ZooKeeper单机伪集群搭建与启动
    Netty实践与NIO原理
    Spring Security原理与应用
    Winform 生成不需要安装的exe可执行文件 ILMerge使用
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/3877780.html
Copyright © 2011-2022 走看看