python的⽂件操作和异常处理
⼀、⽂件的介绍
1 :什么是⽂件?
如下图展⽰数据
image-20210117130855293.png
2 ⽂件的作⽤
使⽤⽂件的⽬的:保存数据存放在磁盘
把⼀些存储存放起来,可以让程序下⼀次执⾏的时候直接使⽤,⽽不必重新制作⼀份,省时省⼒
⼆、⽂件的打开与关闭
思考:如果想⽤word编写⼀份简历,应该有哪些流程呢?
步骤:新建–写⼊数据–关闭
打开word软件,新建⼀个word⽂件
写⼊个⼈简历信息
保存⽂件
关闭word软件
同样,在操作⽂件的整体过程与使⽤word编写⼀份简历的过程是很相似的
结论
打开⽂件,或者新建⽴⼀个⽂件
读/写数据
关闭⽂件
2.1 打开⽂件
在python,使⽤open函数,可以打开⼀个已经存在的⽂件,或者创建⼀个新⽂件open(⽂件名,访问模式)格式
f = open(‘⽂件’, ‘w’)或者f = open(‘⽂件’, ‘r’)
如下图所⽰:不同的打开⽂件的⽅式
image-20210117131807308.png
常见的⽂件操作有:写,读,追加
2.1.1 写数据(write)
格式
对象 = open(“⽂件”,w)
对象.write(“写⼊数据”)
对象.close
案例:以写的⽅式打开⽂件,写⼊数据
f = open(‘’, ‘w’)
f.write(‘hello world, i am here!’)
f.close()
继续写⼊数据
f = open(‘’, ‘w’)
f.write(‘I love you’)
f.close()
总结:
如果⽂件不存在那么创建,如果存在那么就先清空,然后写⼊数据
2.1.2 读数据(read)
案例:以读的⽅式打开⽂件,读取数据
格式
对象 = open(“⽂件”,r)
变量 = 对象.read()
print(变量)
案例:读取⽂件()
f = open(‘’, ‘r’)
content = f.read()
print(content)
总结:
如果⽤open打开⽂件时,如果使⽤的"r",那么可以省略,即只写 open(‘’)
如果没有⽂件,打开报错,存在该⽂件才能操作
如果⽂件中存在中⽂显⽰,会出现乱码需要添加encoding=‘utf-8’
open(‘’,”r”, encoding=‘utf-8’)
思考:如果只想读取⼏个字怎么操作?
案例:读取指定长度的数据(单位是字节)
f = open(‘’, ‘r’)
content = f.read(5) # 最多读取5个数据
print(content)
注意:
使⽤read(num)可以从⽂件中读取数据,num表⽰要从⽂件中读取的数据的长度(单位是字节),如果没有传⼊num,那么就表⽰读取⽂件中所有的数据
2.1.3 读数据(readlines)
就像read没有参数时⼀样,readlines可以按照⾏的⽅式把整个⽂件中的内容进⾏⼀次性读取,并且返回的是⼀个列表,其中每⼀⾏的数据为⼀个元素
格式
对象 = open(“⽂件”,r)
变量 = 对象.readlines()
print(变量)
案例:读取⽂件()
f = open(‘’, ‘r’)
content = f.readlines()
print(content)
print(type(content))
2.1.4 读数据(readline)
readline可以按照⾏的⽅式把整个⽂件中的内容进⾏⼀⾏⼀⾏的读取
格式
对象 = open(“⽂件”,r)
变量 = 对象.readline()
print(变量)
案例,⼀⾏⼀⾏读取
f = open(‘a.txt’, ‘r’, encoding=‘utf-8’)
while True:
content = f.readline()
if content:
print(content)
else:
break
2.1.5 可写(a)
格式
对象 = open("",a)
对象.write(“写⼊数据”)
对象.close
案例,在⽂件中写⼊数据
f = open(“”,a)
f.write(“新的数据”)
对象.close
总结:
(可写)形式打开⽂件,如果⽂件不存在则创建并从头添加写⼊的内容,存在则原有数据后追加数据2.1.6 读数据(rb)
格式1
对象 = open(“⼆进制⽂件”,rb)
变量= 对象.read()
print(变量)
格式2
with open(“⼆进制⽂件”,“rb”) as 对象:
变量 = 对象.read()
print(变量)
案例:使⽤尽可能多的⽅式实现读取图⽚
f = open(‘33.jpg’, ‘rb’)
content = f.read()
print(content)
with open(“33.jpg”,“rb”) as rf:
res = rf.read()
print(res)
使⽤习惯:格式2中不需要⼿动关闭⽂件,所以经常被使⽤
总结
如果没有⽂件,打开报错,存在该⽂件才能操作
2.1.7 写数据(wb)
格式
with open(“⼆进制⽂件”,“wb”) as 对象:
变量 = 对象.write()
print(变量)
案例:备份图⽚
with open(“1.jpg”,“rb”) as rf:
res = rf.read()
with open(“textjpg.jpg”, “wb”) as wf:
res = wf.write(res)
print(res)
2.2 关闭⽂件
格式
close( )
2.3 思考题
如果⼀个⽂件很⼤,⽐如5G,试想应该怎样把⽂件的数据读取到内存然后进⾏处理呢?
调⽤read()会⼀次性读取⽂件的全部内容,如果⽂件有10G,内存就爆了,所以,要保险起见,可以反复调⽤read(size)⽅法�每次最多读取size个字节的内容。另外,调⽤readline()可以每次读取⼀⾏内容,调⽤readlines()⼀次读取所有内容并按⾏返回list�因此,要根据需要决定怎么调⽤。如果⽂件很⼩,read()⼀次性读取最⽅便;如果不能确定⽂件⼤⼩,反复调⽤read(size)⽐较保险;如果是配置⽂件,调⽤readlines()最⽅便
三、⽂件和⽂件夹的操作
⽂件的相关操作
有些时候,需要对⽂件进⾏重命名、删除等⼀些操作,python的os模块中都有这么功能
3.1 ⽂件重命名
os模块中的rename()可以完成对⽂件的重命名操作
格式
import os
案例:
import os
3.2 删除⽂件
os模块中的remove()可以完成对⽂件的重命名操作
格式
import os
案例:
import os
⽂件夹的相关操作
2.1 创建⽂件夹
os模块中的mkdir()可以完成对⽂件的重命名操作
2.2 获取当前⽬录
os模块中的getcwd()可以获取当前⽬录
四、异常
1:什么是异常?
异常即是⼀个事件,该事件会在程序执⾏过程中发⽣,影响了程序的正常执⾏。
⼀般情况下,在Python⽆法正常处理程序时就会发⽣⼀个异常。
异常是Python对象,表⽰⼀个错误。
当Python脚本发⽣异常时我们需要捕获处理它,否则程序会终⽌执⾏。
演⽰异常
f = open(“”,“r”) #FileNotFoundError: [Errno 2] No such file or directory: ‘’
list =[1,2,3]
print(list[4]) #IndexError: list index out of range
str=“jack”
str.index(“v”) ValueError: substring not found
c= 5/0
print© #ZeroDivisionError: division by zero
2 异常处理
2.1 作⽤
捕捉异常可以使⽤try/except语句。
try/except语句⽤来检测try语句块中的错误,从⽽让except语句捕获异常信息并处理。
如果你不想在异常发⽣时结束你的程序,只需在try⾥捕获它。
2.2 语法
以下为简单的try…except…else的语法
try:
<;语句> #运⾏别的代码
except <;名字>:
<;语句> #如果在try部份引发了’name’异常
else:
<;语句> #如果没有异常发⽣
代码
try:
open(“”,“r”)
print(“123”)
except FileNotFoundError:
print(“异常处理”)
else:
print(“没有异常”)
try:
open(“”,“r”)
print(“123”)
python怎么读取py文件except FileNotFoundError as result:
print(“异常处理”,result)
else:
print(“没有异常”)
2.3:使⽤except⽽不带任何异常类型
你可以不带任何异常类型使⽤except,如下实例
语法
try:
正常的操作
except :
发⽣异常,执⾏这块代码
else:
如果没有异常执⾏这块代码
代码
try:
open(“”,“r”)
print(“123”)
except :
print(“异常处理”)
else:
print(“没有异常”)
注意:以上⽅式try-except语句捕获所有发⽣的异常。但这不是⼀个很好的⽅式,我们不能通过该程序识别出具体的异常信息。因为它捕获所有的异常。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论