python文件和异常

1. 文件的介绍

文件操作: 使用代码来读写文件

文件:可以存储在长期存储设置(硬盘,u盘)上的一段数据即为文件

1) 计算机只认识 二进制数据(0和1)

2) 所有的文件在计算机中存储的形式都是二进制即0和1,打开文件看到的文字不是0和1, 原因是打开文件的软件会自动的将二进制转换为文字

文本文件:比如txt,py,md,json等, 可以使用记事本软件打开

二进制文件:比如音频文件mp3,视频文件 mp4,图片png,jpg,gif,exe等。

2. 文件操作的步骤

1) 打开文件

2)读写文件

3)关闭文件

2.1  打开文件 open()

方式一: open(file,mode='r',encoding=None)

--file 表示要操作的文件的名字,可以用相对路径和绝对路径

--mode 打开文件的方式

  • r 只读打开, read,如果文件不存在会报错
  • w只写打开, write,如果文件存在,会覆盖原文件
  • a 追加打开, append,在文件的末尾写入新的内容

--encoding 编码格式,指二进制数据和汉字转换的规则

  • utf-8(常用):将一个汉字转换为3个字节的二进制
  • gbk:将一个汉字转换为2个字节的二进制

返回值:一个文件对象, 后续对文件的操作,都需要这个文件对象

方式二:文件打开的另一种写法(推荐)

with open(file,mode,encoding) as 变量:

        pass

#使用这种写法打开文件, 会自动进行关闭, 不用手动书写关闭的代码。

with open("a.txt","a",encoding='utf-8') as f:
    f.write('good')

2.2 关闭文件 close()

关闭文件,如果是写文件,会自动保存

2.3 读文件 read()

变量 = 文件对象.read()

返回值:返回读取到的文件内容, 类型是字符串

2.4 写文件 write()

参数:写入文件的内容,类型是字符串

2.5 按行读取文件 readline()

一次读取一行的内容, 返回读取到的内容,如果是读到文件末尾,返回的都是空字符串

读取大文件

with open("a.txt","r",encoding='utf-8') as f:
    while True:
        buf = f.readline()
        if buf == "":
            break
        else:
            print(buf,end='')

3. json 文件

1)本质是文本文件, 可以直接使用read 和 write进行操作

2)json文件比较特殊, 比较像python中的字典和列表

例:我叫⼩明,我今年 18 岁,性别男, 学校 空, 爱好 听歌,画画, 我的居住地址为 国家 中国, 城市 ⼴州.

{
  "name": "xiaoming",
  "age": 18,
  "isman": true,
  "school": null,
  "hobbies": ["听歌","画画"],
  "home": {
    "country": "China",
    "city": "GuangZhou"
  }
}

3.1 读取json文件

1)可以直接使用read去读,但是想要取到数据很麻烦

2)使用专门的方法去读

导包 import json

        json.load(文件对象)-->得到的是列表或者字典

import json

with open("ming.json","r",encoding="utf-8") as f:
    # 得到列表或者字典
    buf = json.load(f)
    print(buf) #{'name': 'xiaoming', 'age': 18, 'isman': True, 'school': None, 'hobbies': ['听歌', '画画'], 'home': {'country': 'China', 'city': 'GuangZhou'}}
    print(type(buf))  #<class 'dict'>
    print(buf.get("name"))  #xiaoming
    print(buf.get("home").get("city")) #GuangZhou

4. 异常

程序在运行时,如果python解释器遇到一个错误,则会停止程序的执行, 并且提示一些错误信息,这就是异常。

程序停止执行并且提示错误信息这个动作, 通常称之为:抛出异常(raise)

捕获异常

1)程序在执行时, 如果遇到异常,程序会终止不会继续执行

2)程序遇到异常之后,如果捕获了异常,就可以继续执行

基本语法:

try:

        可能发生异常的代码

except: #可以捕获任意类型的异常

        发生了异常执行的代码

例子:

# 获取用户从键盘输入的数据
num = input("请输入数字:")

try:
    # 转换数据类型为整数
    num = int(num)
    print(num)
except:
    # 当出现错误时,执行下面的
    print("请输入正确的数字")

5. 捕获未知类型的异常(使用最多)

try:

        可能发生异常的代码

except Exception as 变量:#Exception 常见异常类的父类,变量:异常对象

        print(f"发生了异常,{e}")

异常捕获的完整结构

try:

        可能发生异常的代码

except 异常类型:

        发生了指定类型的异常执行的代码

except Exception as e:

        发生了其他类型的异常执行的代码

else:

        没有发生异常, 会执行的代码

finally:

        不管有没有发生异常, 都会执行的代码

6. 抛出异常

raise关键字的作用, 就是来抛出异常, 让代码终止执行

应用场景:自己书写代码模块, 让别人使用,为了让别人按照你的规定使用你的代码,你就可以在他不满足你条件的情况下, 使用rasie 抛出异常

  • 18
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值