python学习笔记(七)文件、异常和模块

一、文件的读写

1、文件打开

1.1、文件打开通用格式:

with open("文件路径","打开格式",encoding = "操作文件的字符编码")as f:
"对文件进行相应的读写操作"
#使用with 块的好处:执行完毕后,自动对文件进行close操作

eg1:一个简单的文件读取:
如图是我打印的股票代码。
在这里插入图片描述

1.2文件路径

  • 完整路径
  • 程序与问件在同一文件夹中可以缺省,不用写程序所在的路径,直接写文件名就行。
  • 打开模式
    • “r” 只读模式,文件不存在会报错
    • “w” 覆盖写模式,文件不存在则创建,存在则覆盖原文件。
    • “x”创建写模式,如文件不存在则创建,存在则报错。
    • “a”追加写模式,文件不存在则创建,文件存在则在文件后追加内容。
    • “b”二进制文件模式,不能单独使用,需要配合使用,如“rb”“wb”“ab”,该模式不需要指定encoding。
    • “t”文本文件模式。默认值,需配合使用,如“rt”“wt”“at”,一般省略,写成:“r”“w”“a”
    • 打开模式缺省,默认为只读模式

2、字符编码

2.1、“utf-8”万国码
2.2、“gbk”中文编码,专门解决中文编码问题
2.3、windows系统下,默认“gbk”,因为系统会自动识别地区,使用该地区的编码

3、文件读取

3.1、读取整个内容——f.read()
eg2:读取文件内容

在这里插入图片描述
记得写好路径和编码。
3.2、逐行读取——f.readline()。
eg3:逐行读取

在这里插入图片描述
从图中可以看到只有一行。
一般通过while循环结合readline()来读取。
读取换行符(空行)和读到没东西是有区别的,读取空行读到的是换行符,没有东西读到的是空。
3.3 读入所有行形成一个列表——readlines()
文件太大时,用read和readlines使用内存很大,但是用readline又不太方便,可以考虑使用for或while循环

4、文本写入

4.1、向文件写入字符串或者字节流——f.write()

with open("D:\\AAstudy\\python_test\\test1.txt","w",encoding="utf-8")as f:
    f.write("写入第一行\n")
    f.write("写入第二行\n")
    f.write("写入第三行\n")
    

在这里插入图片描述
“w”:如果文件不存在则创建一个,如果文件存在则新写入内容会覆盖原有内容。
4.2、追加模式
在这里插入图片描述
4.3、f.writelines
将一个元素为字符串的列表整体写入文件。
在这里插入图片描述

5、既读又写

5.1、“r+”指针在开始。要把指针移到末尾才能开始写,否则会覆盖前面的内容。
在这里插入图片描述
全部读取后指针到结尾。

  • seek(偏移字节数,位置(0:文本开始,1:当前,2:文本最后))

5.2、“w+”:覆盖写。
不存在则创建,存在则覆盖。
执行写入操作后指针同样移到末尾,如果想执行读操作需要将指针移到开头才能继续读。
在这里插入图片描述

5.3、“a+”:
文件不存在则创建,指针在末尾添加新内容。不会清空原内容。
在这里插入图片描述

6、数据存储

6.1、csv格式(纯文本格式)
可以由excel打开。
读取:
在这里插入图片描述
写入:
在这里插入图片描述
在这里插入图片描述
也可以用一些库文件或者csv文件来完成上述操作。
6.2、json文件
常常存储字典类型。

  • 写入——dump()

在这里插入图片描述

  • 读取——load()
    在这里插入图片描述

二、异常处理

1、可能出现的异常

  • 1.1、除0运算——ZeroDivisionError
  • 1.2、找不到文件——FileNotFoundError
  • 1.3、值错误——ValueError
  • 1.4、索引错误——IndexError
  • 1.5、类型错误——TypeError
  • 1.6、未定义变量——NameError
  • 1.7、访问不存在的键——KeyError

2、异常处理

2.1、try_except

  • 如果try顺利运行,except不会被触发

  • 如果try内代码发生错误,触发except,执行except代码块

  • 单分支

在这里插入图片描述
要先预判可能出现的错误,如果预判出错也不会执行except语句块,仍然会抛出错误。
在这里插入图片描述

  • 多分支
    在这里插入图片描述

  • 万能的exception,不论什么错误都能捕捉

在这里插入图片描述

  • 捕获异常的值as
    在这里插入图片描述
    2.2、try_except_else

  • try模块执行,else模块也执行,相当于else是try的奖赏
    在这里插入图片描述
    2.3、try_exception_finally

  • 无论模块是否执行,finally都会执行
    在这里插入图片描述

三、模块

1、模块的分类
1.1、python内置

  • 时间库,随机库,容器库等等

1.2、第三方库

  • numpy、pandas等等

1.3、自定义模块

  • 单独的py文件


  • 2、模块的导入
    2.1、导入整个模块

  • import 模块名
    在这里插入图片描述
    2.2、从模块中导入类或函数——from模块import类名或函数名

在这里插入图片描述
一次导入多个,在最后用逗号隔开就行了。
在这里插入图片描述
导入后就存在与python的内存中了,python在内存中。(第一优先级)
3、导入模块中所有的类和函数
from模块import*
4、python启动时,解释器会默认加载一些modules存放在sys.module中(第二优先级)
5、sys.path路径中包含的模块。

  • 它是第三优先级,sys.path的第一个路径是当前文件所在的文件夹。
  • 若将不再该文件夹内的模块导入,需要将模块路径添加到sys.path.
    在这里插入图片描述
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

亿朵发发

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值