Python 文件操作是读写本地文件、处理数据的必备技能,核心围绕打开文件 → 操作文件 → 关闭文件三步,包含基础读写、编码处理、异常处理、高级操作等。
一、打开文件
打开已经存在的文件或者创建一个新文件:
语法:open (name,mode,encoding)
- name:要打开的目标文件名的字符串(可以包含文件所在的具体路径)。
- mode:设置打开文件的模式,访问模式:只读,写,追加等。
- encoding:编码格式
读相关操作方法:
- read()方法:文件对象.read(num),num表示从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。
- readlines()方法:readlines可以按照行的方式把整个文件中的内容进行一次读取,并且返回的是一个列表,其中每一行的数据为一个元素。
for line in f.readlines():
line = line.strip()
print(line)
f.close()
for line in open(name,mode,encoding)
print(line.strip())
#for 循环结束后会自动关闭close
with open (name,mode,encoding) as f:
f.readlines()
#可以在操作完成后自动关闭close文件
二、文件写入
- 文件不存在,使用“w”模式,会创建新文件
- 文件如果存在,使用“w”模式,会将原有内容清空
f = open(name,w) #打开文件
f.write(内容) #文件写入
f.flush() #内容刷新
- 直接调用write,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区。
- 当调用flush的时候,内容会真正写入文件。
- 这样做是避免频繁的操作硬盘,导致效率下降。(攒一堆,一次性写入文件)
a模式:
f = open(name,a) #打开文件
f.write(内容) #文件写入
f.flush #内容刷新
- a模式,文件不存在会创建文件
- a文件,文件存在,会在最后追加写入文件
b模式
- 只有文本文件可以r,w,a
- 非文本文件必须带有b,以二进制模式处理
三、异常处理
捕获异常的作用在于:提前假设某处会出现异常,做好提前准备,当真的出现异常的时候,可以有后续手段。
基本语法:
try:
可能发生错误的代码
except:
如果出现异常执行的代码
捕获指定异常:
eg:
try:
print(name)
except NameError as e:
print('name变量名称未定义错误')
- 注意:如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常。
- 一般try下方只放一行尝试执行的代码。
通用:
try:
可能有异常的代码
Expect 异常类型 as 变量: #Exception:不管是什么异常,都可以捕获
出现异常的代码
......
expect 异常类型 as 变量: #只在try内部的代码,才会捕获异常
出现异常的代码
else:(可选)
没有异常的处理代码
finally:(可选)
有没有异常都会处理的代码
异常的传递性: 当函数1中发生异常,并且没有捕获处理这个异常的时候,异常会传递到函数2,当函数2也没有捕获处理这个异常的时候,main函数会捕获这个异常。
- 当所有的函数都没有捕获异常的时候,程序就会报错。