Python文件读取操作和异常处理

Python文件读取操作和异常处理

文件的定义和类型

什么是文件呢?
  1. 文件是数据的抽象和集合
  2. 文件是存储在辅助存储器上的数据序列
  3. 文件是存储的一种
文件有哪些类型呢?
  1. 本质上所有文件以二进制储存,不过又可以分为文本文件和二进制文件
  2. 文本文件时由单一特定编码组成,如UTF-8编码
    用于txt、py文件
  3. 二进制文件直接由比特0和1组成,没有统一的字符编码
    如png图片文件,avi视频文件

文件处理步骤

首先,想要操作文件必须了解文件的操作步骤,明白文件操作的流程。
那么文件操作有哪几个步骤呢?

文件处理可以分为三大步:

  1. 文件的打开

  2. 文件的具体操作

  3. 文件的关闭

文件的打开和关闭

文件的打开

文件打开有两种方式:

  1. 直接采用open(文件名称)打开

    fileName = open('test1.txt')
    #注意:文件名称可以是文件相对与当前程序的路径,称为相对路径;
    #也可以是文件相对于电脑的路径,称为绝对路径。
    
  2. 采用with… as… 打开

    filename = 'test1'
    with open(filename) as f:
        #文件操作代码
    

文件的关闭

文件打开后必须关闭文件。不过在python解析器中,当程序关后会自动关闭文件。

文件关闭语法 变量名.close()

fileName = open('test1.txt')
#文件操作代码
filename.close()

需要注意的是,采用with…as…方式打开的文件就不用我们在写关闭文件的代码。with…as…会自动在文件操作代码运行完成后关闭文件。

文件的操作

文件操作分为:读文件、写文件。

读文件

读文件有三种操作方式,分别是:

  1. file.read(size)

    1. 读入全部内容,默认size=-1,如果size=n则读入前size长度
  2. file.readline(size)

    1. 读入一行内容,默认size=-1,如果给出参数,则读入该行前size长度的内容
  3. file.readlines(hint)

    1. 读入文件所有行,以每行为元素形成列表,默认hibt=-1,如果给出参数,则读入前hint行

写文件

写文件有两种操作方式外加一种辅助操作:

  1. file.write(s)

    1. 向文件协议一个字符串或字节流
    f.write('中国是一个伟大的国家!')
    
  2. file.writeline(lines)

    1. 将一个元素全位字符串的列表写入文件,字符串拼接后写入
    ls = ['中国', '法国', '美国']
    f.write(ls)
    #中国法国美国
    
  3. file.seek(offset)

    1. 改变当前文件操作指针的位置,offset含义如下:
      0-文件开头;1-当前位置;2-文件结尾
      
    f.seel(0)#回到文件开头
    f.seel(1)#文件当前位置
    f.seel(2)#回到文件结尾
    

文件写入和读取

fo = opne('test1.txt', 'w+')
ls = ['中国', '法国', '美国']
fo.writelines(ls)
fo.seek(0)
for line in fo:
    print(line)
fo.close()

文件打开模式

文件打开模式有七种:

  1. 'r' 只读模式,默认值,如果访问到文件不存在,则返回FileNotFoundError一异常
    
  2. 'w'覆盖写模式,文件不存在则创建文件,如果文件存在,则完全覆盖
    
  3. 'x'创建写模式,文件不存在则创建文件,存在则返回FileExistsError
    
  4. 'a'追加写模式,文件不存在则创建文件,文件存在则在文件最后追加内容
    
  5. 'b'以二进制形式打开文件
    
  6. 't'以文本形式打开文件 默认模式
    
  7. '+'与r/w/a/一同使用,在与原功能上增加读写功能
    
    fileName = open('test1.txt') #默认使用文本形式和只读模式打开文件
    
    fileName = open('test1.txt', 'rt')#文本制度模式打开文件
    
    fileName = open('test1.txt', 'w')#文本形式,覆盖写模式打开问及那
    fileName = open('test1.txt', 'a+')#文本形式,追加写模式+读文件
    fileName = open('test1.txt', 'x')#文本形式、创建写模式
    fileName = open('test1.txt', 'b')#二进制形式,只读模式
    fileName = open('test1.txt', 'wb')#二进制形式,覆盖写模式
    
    fileName.close()
    

文件的全文本操作

  1. 方法一:

    fname = input('请输入要打开文件的名称:')
    fo = open(fname, 'r')
    txt = fo.read()
    #对全文本txt进行处理
    fo.close()
    # 一次读入,统一处理,文本文件内容大消耗大
    
  2. 方法二:

    fname = input('请输入要打开文件的名称:')
    fo = open(fname, 'r')
    txt = fo.read(2)
    while txt != '':
        #对txt进行处理
        txt = fo.read(2)
    fo.close()
    # 分阶段,按数量读入,逐步处理 处理大文件更加可行有效
    

分行储存的文件读写

  • 逐行遍历文件

    fname = input('请输入要打开文件的名称:')
    fo = open(fname, 'r')
    for line in fo.readlines()
        print(line)
    fo.close()
    

异常处理

异常的定义

什么是异常呢?

在程序运行过程中,不可避免的出现一些错误 例如用没赋值的变量等

异常的处理

首先我们要明白,
程序运行时出现异常、目的不是终止程序
python是希望出现异常时,我们可以编写代码来对异常进行处理

异常的传播

当在函数中出现异常时,如果在函数中处理了异常,则不会在继续传播
如果函数中没有处理,则异常会像函数掉用传播
如果函数点用处处理了异常则不会传播
如果没有处理则会继续传播
知道传递到全局作用域(主模块)如果依然没有处理,则程序会终止
def fn():
    print('hello fn')
    print(10/0)

def fn2():
    print('hello fn2')
    fn()

def fn3():
    print('hello fn3')
    fn2()

异常处理方法

异常的处理可以使用如下语法:

try:
    #可能出现异常的代码块
except:
    #出现异常后执行的代码块
finally:
    #管有没有异常都会执行的代码块
print('异常出现前')
try:
    print(a)
    print(10/0)
except Exception as e:
#except后面如果跟异常对象则默认捕获所有异常
#由于Exception是所有异常对象的父对象所以except后面跟Exception捕获所有异常
    print(e,type(e))
else:
    print('yi')
finally:
    print('无论是否出现异常,finally都会执行')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值