zoukankan      html  css  js  c++  java
  • Python基础_文件的的处理及异常处理

      今天主要讲讲文件读写及异常处理。

    一.文件操作

    1.1 文件的创建及读

      打开文件 open 函数  open(file,[option])

      file 是要打开的文件  option是可选择的参数文件的打开模式,常见有 mode 等

      文件的打开模式

        r 只读模式,文件不存在时会报错。
        w 写入模式,文件存在会清空之前的内容,文件不存在则会新建文件。
        x 写入模式,文件存在会报错,文件不存在则会新建文件。
        a 追加写入模式,不清空之前的文件,直接将写入的内容添加到后面。
        b 以二进制模式读写文件,wb,rb,ab。
        + 可读写模式,r+,w+,x+,a+,这几种模式还遵循了r,w,x,a的基本原则。

        例如:

    1 f=open('fangfang.txt','r')
    2 f=open('fangfang.txt','x')  
    3 f=open('fangfang.txt','r+')     #读取文件的相对路径,即当前文件同一级别的文件
    4 f=open(r'F:潭州教育python学习笔记笔记Python基础fangfanf1.txt','w')  #读取文件的绝对路径,这里要注意去掉转义字符  r''

    1.2 文件的读取

      f.read(size)  读取文件的内容,将文件的内容以字符串形式返回。
        size是可选的数值,指定字符串长度,如果没有指定size或者指定为负数,就会读取并返回整个文件。当文件大小为当前机器内存两倍时就会产生问题,反之

        就尽可能大的size读取和返回数据,如果到了文件末尾,会返回空字符串。
      

      f.readline() #从文件中读取单独一行。
        字符串结尾会自动加上一个换行符 ,只有当文件最后没有以换行符结尾时,这一操作才会被忽略,这样返回值就不会有混淆。如果返回空字符串,表示到

        达率文件末尾,如果是空行,就会描述为 ,一个只有换行符的字符串。

      f.readlines() #一次读取所有,返回一个列表,列表的元素为文件行的内容。

        可以通过列表索引的方式将文件的每一行的内容输出。
        可以通过for循环迭代输出每一行的信息。

    1.3.文件的写入

      f.write() #将要写入的内容以字符串的形式通过write方法写入文件中。
      f.writelines() #括号里必须是由字符串元素组成的序列。

    1.4.保存和关闭

      f.flush()在读写模式下,当写完的数据想要读取出来时,要先缓存区的内容保存到文件当中。

      f.close() 关闭文件。对一个已经关闭的文件进行操作会报错。

    1.5光标位置

      f.tell() 返回光标在文件中的位置。
      f.seek(offset,from) #常用 f.seek(0) 返回起始位置
      在文件中移动文件指针,从from(0代表起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节。
      常用 f.seek(0,0) 返回起始位置。 其他了解一下

    1.6查看文件信息
      closed 查看文件是否已经关闭,返回布尔值。
           mode 返回文件打开模式。
           name 返回文件名。

    1.7.with 形式打开文件,里面的语句执行完后会自动关闭文件

      with open('文件名') as f:

        f.read()
    二.异常语法

     1 try:
     2     a=1
     3 except NameError:
     4     print('我有错')
     5 except TypeError:
     6     print('其实我错了')
     7 except Exception:
     8     print('你们都没错,我错了')
     9 else:
    10     print('啊,代码正确呀')
    11 finally:
    12     print('不管了,我要执行')
     1 try:
     2     suite1 #测试语句块
     3 except exception1:
     4     suite2 #如果测试语句suite1中发生exception1异常时执行
     5 except (exception2,exception3):
     6     suite3 #如果测试语句suite1中发生元组中任意异常时执行
     7 except exception4 as reason: #as把异常的原因赋值给reason
     8     suite4 #如果测试语句suite1发生exception4的异常时执行
     9 except:
    10     suite5 #如果测试语句suite1发生异常在所列出的异常之外时执行
    11 else:
    12     suite5 #如果测试语句块suite1中没有发生异常时执行
    13 finally:
    14     suit6 #不管测试语句suite1中又没有发生异常都会执行
    15 
    16   

      注意:中间的except,else,finally都是可选的,但至少有一个,不然try就没有意义了,根据实际中的需求来选择。

      所有错误类型都继承自BaseException
      https://docs.python.org/3/library/exceptions.html#exception-hierarchy

      注意:如果抛出父类异常,在子类不会再获取,如下:

    1 try:
    2     fun()
    3 except Exception as e:
    4     raise Exception
    5 except ImportError as e:
    6     raise ImportError
    7 finally:
    8     pass

      在上面的例子中,下面的ImportError就不会被抛出,因为ImportError继承Exception,但是可以把Exception放在后面是可以的

      e可以得到系统给出的报错信息
    '

    assert #断言
      测表示式,其返回值为假,就会触发异常
      assert 1==1 #没有返回值

      assert 1==2 #返回AssertionError

     

     

     

  • 相关阅读:
    一个进程间同步和通讯的 C# 框架
    C# 程序员最常犯的 10 个错误
    《C#并发编程经典实例》笔记
    C# BackgroundWorker 详解
    C# Excel导入导出
    List实现行转列的通用方案
    C# 开发者最经常犯的 8 个错误
    Intellij IDEA 查找接口实现类的快捷键
    target runtime com.genuitec.runtime.genuitec.jee60 is not defined
    java.io.WinNTFileSystem
  • 原文地址:https://www.cnblogs.com/fangfang31140519/p/8541831.html
Copyright © 2011-2022 走看看