• python的文件操作与异常处理



     将一些知识点记录一下,有事没事看一眼。

    文件读取: open
    import os
        os.getcwd() #取得当前的执行路径
        os.chdir('C:/Users/ourgame/Desktop/headFirstPython') #进入某个路径
        
        data = open('sketch.txt')    #打开文件
        print(data.readline(),end='') #读取一行,文件指针会向下移动
        print(data.readline(),end='') #此句与上句输出不一样
        data.seek(0)    #data指针返回到文件起始位置
        for each in data:
            print(each,end='')    #输出整个文件
        data.close() #关闭文件
    



    文件内容的处理:split
       for each_line in data: 
            (role,line_spoken) = each_line.split(':')
            print(role,end='')
            print(' said: ',end='')
            print(line_spoken,end='')
    



    异常处理:try except
    python 面对错误的逻辑与其他语言不同。它放任错误的发生并在异常中处理它,并不会在主逻辑中添加更多的逻辑处理。
    try:
        data = open('sketch.txt')
     
        for each_line in data:
          #  if each_line.find(":") > -1:
            try:
                    (role,line_spoken) = each_line.split(':',1)
                    print(role,end='')
                    print(' said: ',end='')
                    print(line_spoken,end='')
            except ValueError:
                pass
     
    except IOError as err:  #使用as将异常对象,并将其赋值给一个标识符
        print('File Error:'+str(err)) #‘+’用于字符串直接的连接
     
    finally:
        if 'data' in locals():
            data.close()
    



     
    或使用with(无需使用finally)
     

    try:
        with open('its.txt','w') as data:
            print("it's...",file=data) #输出默认为sys.stdout
    except IOError as err:
        print("File Error:"+str(err)) #str()将对象转换为字符串
    

    with也可以复合使用:
    with open("a.txt",'w') as a_out,open("b.txt",'w') as b_out:
    

    pass语句就是Python的空语句或NULL语句,它什么也不做。

     
        这是一个思路的转变:随之你必须考虑的错误越来越多,”增加额外代码和逻辑“的方案复杂性也随之增加,直到最后可能会掩盖程序的本来作用。而异常处理方案就不存在这个问题,可以一目了然地看出程序的主要作用。
        通过使用Python的异常处理机制,你可以关注代码真正需要做什么,而不必担心哪里可能出问题,并编写额外的代码来避免运行时错误。谨慎的使用try可以让代码更易阅读,更易写,而且可能这是最重要的——出问题时候更容易修正。
        要重点关注你的代码需要做什么。

    写文件:以写的模式打开文件
        out = opne("data.txt","w")
        print("test data",file=out)
        out.close()
    

    使用

    w : 文件已存在则清空文件内容。
    a : 追加到一个文件。
    w+: 打开文件读写,不清除。
    b : 以二进制操作

    检查文件中是否存在某个变量:locals()
     
    if 'data' in locals():
        xxxxxx
     

    调用多个缺省参数时,可指定相应的 参数名=值 来确定某个参数:
    print("abc",file=myout)

    去除字符串的空格:strip()方法可以从字符串中去除不想要的空格
     

    格式化存储(腌制):pickle、用dump储存、用load恢复
     
        import pickle
            ......
        with open('mydata.pickle','wb') as mysavedata: #要以二进制操作
            pickle.dump(['a','b'],mysavedata)
            ......
        with open('mydata.pickle','rb') as my_restore_data: #以二进制取
            a_list = pickle.load(my_restore_data)
        print(a_list)    #一旦数据回到程序中,就可以像任何其他数据对象一样操作了
     
    
     
     
    其异常的格式为:
     
    except pickle.PickleError as per:
        print("Pickel Error:"+str(per))
    

    做持久化存储,使用pickle的通用文件I/O才是上策。

    本篇博客出自阿修罗道,转载请注明出处:http://blog.csdn.net/fansongy/article/details/8986616


     
  • 相关阅读:
    NoInstall_Mysql
    说话
    我是一名博客新人
    pom.xml报错
    模板——链表模板、有序链表模板及测试
    模板——函数模板
    模板——类模板
    MDI程序演示
    容器和算法2 C++快速入门48(完)
    MDI程序演示
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3105159.html
Copyright © 2020-2023  润新知