美文网首页
python 文件及文件夹的操作和异常捕获

python 文件及文件夹的操作和异常捕获

作者: MambaMentality | 来源:发表于2017-07-12 21:00 被阅读0次

    1、面向对象的特征:封装、继承、多态

    1.1、封装:

    函数一种封装,封装了一些逻辑代码

    类也是一种封装,封装属性和方法

    属性私有化,对外提供可访问的访问

    代码更简洁,方便调用,重复利用,扩展性更好。

    1.2、继承:

    将公共有内容放在父类中,子类只关注自己特有的属性和方法。

    代码更简洁,方便调用,重复利用,扩展性更好。

    1.3、多态:

    一个对象,赋不同的值,有不同的形态。

    在其它语言中,将子类对象赋值给父类对象,这样父类对象会呈现不同的状态。

    python本身是一种弱类型语言,没有要求变量的类型。

    类型是根据值类型判断的。所有不完全符合多态的要求。

    所以说python不支持多态。

    2.实现文件的复制粘贴(注重模块化思维,设计模式的融入)

    1、输入源文件的路径

    2、输入源文件的名字

    3、输入目标路径

    4、执行复制粘贴

    5、要求复制到目标路径里,默认是原来文件的名字,如果此名字已经在当前路径里,把名字改成如下格式(需要加副本或者对应的数字):

    import os

    import os.path

    def main():

    pathSrc = input('请输入源文件的路径:')

    fileName = input('请输入源文件的名字:')

    pathDest = input('请输入目标文件夹的路径:')

    i = 2

    while True:

    if not hasFile(pathDest,fileName):

    copy_paste(os.path.join(pathSrc,fileName),os.path.join(pathDest,fileName))

    break

    elif not hasFile(pathDest,doFileName(fileName)):

    copy_paste(os.path.join(pathSrc,fileName),os.path.join(pathDest,doFileName(fileName)))

    break

    elif not hasFile(pathDest,doFileName(fileName,i)):

    copy_paste(os.path.join(pathSrc,fileName),os.path.join(pathDest,doFileName(fileName,i)))

    break

    else:

    i+=1

    def hasFile(path,fileName):

    '''

    判断文件是否存在

    path:文件所在的路径

    fileName:文件的名字

    '''

    return os.path.exists(os.path.join(path,fileName))

    def doFileName(fileName,num=None):

    '''

    返回处理后文件的名字

    如果num是None,只拼接副本

    否则,拼接副本加数字

    '''

    newFileName = None

    index = fileName.rfind('.')

    if num==None:

    if index!=-1:

    newFileName = '%s - 副本%s'%(fileName[:index],fileName[index:])

    else:

    newFileName= '%s - 副本'%fileName

    else:

    if index!=-1:

    newFileName = '%s - 副本 (%s)%s'%(fileName[:index],num,fileName[index:])

    else:

    newFileName= '%s - 副本 (%s)'%(fileName,num)

    return newFileName

    def copy_paste(pathSrc,pathDest):

    '''赋值 粘贴'''

    fileSrc = open(pathSrc,'rb')

    fileDest = open(pathDest,'wb')

    content = fileSrc.readline()

    while content!=b'':

    fileDest.write(content)

    content = fileSrc.readline()

    fileSrc.close()

    fileDest.close()

    '''

    执行。。。。。。。

    '''

    main()

    3.异常的捕捉

    3.1 完整的格式内容:

    try:

          pass

    except Exception as ex:

          pass

    else:

          pass

    finally:

         pass

    3.2 try except 用法

    ·把可能出现问题的代码,放在try中 。·把处理异常的代码,放在except中

    ·3.2.1 except 多个异常的情况

    try:

    print('-----test--1---')

    open('123.txt','r')#如果123.txt文件不存在,那么会产生IOError异常

    print('-----test--2---')

    print(num)#如果num变量没有定义,那么会产生NameError异常

    except(IOError,NameError):

    #如果想通过一次except捕获到多个异常可以用一个元组的方式

    # errorMsg里会保存捕获到的错误信息

    print(errorMsg)

    注意事项:·当捕获多个异常时,可以把要捕获的异常的名字,放到except后,并使用元组的方式仅进行存储

    3.2.2 捕获异常具体描述

    3.3 finally

    注意:无论是否有异常,finally里代码都会执行

    有一些资源使用完毕之后,需要关闭释放资源。

    无论是否有异常,都得关闭,那么这样的代码可以写到finally中

    import time

    try:

    f = open('test.txt')

    try:

    whileTrue:

    content = f.readline()

    iflen(content) ==0:

    break

    time.sleep(2)

    print(content)

    except:

    #如果在读取文件的过程中,产生了异常,那么就会捕获到

    #比如 按下了ctrl+c

    pass

    finally:

    f.close()

    print('关闭文件')

    except:

    print("没有这个文件")

    3.4  异常的嵌套1

    ‘’‘

    import time

    try:

    #f = open('test.txt')

    f = open(r'C:\Users\Administrator\Desktop\xx.txt')

    try:

    while True:

    content = f.readline()

    if len(content) == 0:

    break

    num=1/0 #模拟一个异常

    #time.sleep(2)

    print(content)

    #except:

    #print('except...')

    finally:

    f.close()

    print('关闭文件')

    except:

    print('没有这个文件')

    '''

    3.5 异常的嵌套2

    def test1():

    print("----test1-1----")

    print(num)

    print("----test1-2----")

    '''

    def test1():

    print("----test1-1----")

    try:

    print(num)

    except:

    print('test1  except......')

    print("----test1-2----")

    '''

    def test2():

    print("----test2-1----")

    test1()

    print("----test2-2----")

    def test3():

    try:

    print("----test3-1----")

    test1()

    print("----test3-2----")

    except Exception as result:

    print("捕获到了异常,信息是:%s"%result)

    print("----test3-2----")

    test3()

    #print("------华丽的分割线-----")

    #test2()

    相关文章

      网友评论

          本文标题:python 文件及文件夹的操作和异常捕获

          本文链接:https://www.haomeiwen.com/subject/evcihxtx.html