【Python学习笔记:10】文件+枚举类型+异常

文件

基本概念

作用
记录数据,下次执行可直接使用

文件类型

每类信息可以一种或多种文件格式存在电脑中
扩展名可帮助应用程序识别文件格式
大体分为:文本文件和二进制文件

操作文件

日常操作文件

  1. 打开word,新建一个word文件
  2. 写入信息
  3. 保存文件
  4. 关闭word软件

Python操作文件

  1. 打开文件,或新建一个文件:open(文件名, 访问模式)
  2. 读/写数据
    • 文件.write(“数据”) 一次性写入一个数据
    • 文件.writelines([数据1, 数据2]) 一次性写入多个数据
    • 文件.read(字符个数) 读取指定个数的字符
    • 文件.read() 读取所有数据
    • f.readlines() 一次性把每一行读取出来保存在列表中
    • f.readline() 一行一行读取
    • 如果文件过大,readlines一次性读取出来大致超过电脑的内存,建议使用readline
    • 如果文件很小,建议使用readlines一次性读取
  3. 关闭文件:文件变量.close()

常用访问模式

  • r 读取
  • a 追加
  • w 写入
  • x 创建

关闭文件

文件变量.close()

数据写在文件中

语法
文件.write(“数据”) 一次性写入一个数据
文件.writelines([数据1, 数据2]) 一次性写入多个数据

注意

  • f.write()
  • f.writelines()
  • w 默认覆盖原本内容

文件读取数据

语法
文件.read(字符个数) 读取指定个数的字符
文件.read() 读取所有数据

注意

  • f.read() 可多次调用,每次调用会在原基础上向后读取
  • r 表示要读取文件中的内容,但不可写入数据
  • 若文件不存在,会报错
  • open 打开模式默认是 r

一行一行从文件中读取数据

语法
列表 = 文件.readlines()

读取文件所有行,且把每行数据放在列表返回,列表元素是文件每行数据

字符串 = 文件.readline()

一次性读取一行文件中的数据

区别

  • readlines 是一次性把每行都读取出来保存在列表中
  • readline 是一行一行读取

注意

  • 每调用依次 readline() 才会读取一行数据

任意文件复制

注意

  • 所有文件都是二进制文件(包含文本文件)
  • 二进制文件不需要指定编码,只有文本文件需要指定编码

文件操作

os模块提供了很多方法来处理文件和目录

文件处理

JSON语法

  • 使用key:value形式描述
  • 大括号表示对象
  • 数据之间使用逗号隔开
  • 中括号表示数组

JSON文件处理

本质是一个字符串
JSON是一种轻量级的数据交换格式
Python3可使用json模块解决JSON数据进行编解码

  • json.loads():对数据进行解码,把JSON数据转为Python Object
  • json.dumps():对数据进行编码,把Python Object转为JSON

注意:JSON文件不支持注释

YAML文件处理

使用空白符号缩进,和高级语言类似
配置文件后缀:.yml/.yaml

  • 对象:键值对的集合,映射/字典
  • 数组:一组按次序排列的值,序列/列表
  • 纯量scalars:单个,不可再分的值
    • 纯量是最基本,不可再分的值,包括:字符串、布尔值、证书、浮点数、Null时间、日期

YAML文件支持注释

扩展

ASCII码、Unicode

ASCII——维基百科
Unicode——维基百科
中文一般占用3个字节,也有占用4个字节

枚举类型Enum

规则

  • 成员不能重复
  • 成员值不可修改

注意

  • DataType.TRAIN是枚举类型
  • DataType.TRAIN.value才是存储的数据类型
from enum import Enum


class DataType(Enum):
    TRAIN = 'train'
    TEST = 'test'

# 获取值
DataType.TRAIN.value

异常

当 Python 检测到到一个错误时,解释器无法继续执行,会出现一些错误提示,即为异常(Exception)

捕获异常

使用 try… except 处理异常
语法

try:
    # 可能出现异常的代码块
except:
    # 处理异常

try:
    # 可能出现异常的代码块
except(错误类型类名1, 错误类型类名2):
    # 处理异常

例如

print('执行前')

try:
    open('zzzz.txt')
    print('执行中..')
except FileNotFoundError as e:
    print(e)

print('执行后')

输出
在这里插入图片描述

异常类型

错误类型不用单独记录,最大的异常类型是 Exception

常见错误类型如图

在这里插入图片描述

图片地址来自:Built-in Exceptions --Python

获取异常的信息

最大的异常类型是 Exception,代码执行从上往下,先碰到能捕获异常的代码,就会进入相应的 except 捕获执行代码块中

try:
    # 可能出现异常的代码块
except Exception as e:
    # 处理异常

无论程序是否出现异常,都会执行 finally 代码块

例如文件打开后,在执行代码过程中,出现异常,导致文件没有关闭,可使用 finally 语句处理文件关闭

try:
    # 可能出现异常的代码块
except Exception as e:
    # 处理异常
finally:
    # 无论是否捕获到异常 都会执行的代码块

自定义异常

抛出异常使用 raise
语法
raise 异常错误类型(异常输出信息)

例如:FoodError

class FoodError(Exception):
    def __init__(self, msg):
        self.msg = msg
        pass


class Kitchen:
    def __init__(self, name):
        self.name = name
        pass

    def cookFood(self, food):
        if food == 'bomb':
            raise FoodError('Seriously!?')
        else:
            print('Good food')
            pass


zzz_kitchen = Kitchen("zzz's kitchen")
food = input('Input a food: ')

try:
    zzz_kitchen.cookFood(food)
except FoodError as e:
    print(type(e).__name__, e)
    pass
finally:
    print('finally: 释放资源')
    pass

输出
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

饭碗、碗碗香

感谢壮士的慷概解囊!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值