一、文件的读写
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.