欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 手游 > 三、文件操作、错误与异常处理等(爬虫及数据可视化)

三、文件操作、错误与异常处理等(爬虫及数据可视化)

2024/10/24 10:20:59 来源:https://blog.csdn.net/qq_44870829/article/details/140133990  浏览:    关键词:三、文件操作、错误与异常处理等(爬虫及数据可视化)

三、文件操作、错误与异常处理等(爬虫及数据可视化)

  • 1,文件操作
  • 2,错误与异常

1,文件操作

学习文件操作的相关知识,将一些数据存起来,打开、关闭、读取、写入,重命名、删除等操作在os模块中有

Test.txt

hello world,i am here--1!
hello world,i am here--2!
hello world,i am here--3!
hello world,i am here--4!
hello world,i am here--5!
#-*- codeing = utf-8 -*- 
#@Time : 2020/11/19 16:03
#@Author : 招财进宝
#@File : demo2.py
#@Software: PyCharm'''
f=open("test.txt","w")  #打开文件,“w”模式(写模式),文件不存在就新建
f.write("hello world,i am here!")       #必须要以w模式方式打开,才能写入
f.close()               #关闭文件
'''''' #read方法,读取指定的字符,开始时定位在文件头部,每执行一次向后移动指定字符数
#网络,文件传输时,读的二进制,或者本来字符的,可以直接按照字符数量读,直接下载文件时会告诉文件大小,如下载器
#test.txt   (hello world,i am here!)
f=open("test.txt")          #打开已经存在的文件,若不存在,则报错,默认模式是“r”(只读模式)content = f.read(5)     #从开头向后读5个字符出来
print(content)content = f.read(5)     #从上一个读取的字符后,读取5个字符
print(content)f.close()               #关闭文件
''''''
f=open("test.txt","r")content = f.readlines()         #将整个文档全部读取进来(形成一个列表),每行作为一个字符串元素
print(content)i = 1
for temp in content:print("%d:%s"%(i,temp))i+=1f.close()               #关闭文件
'''f=open("test.txt","r")content = f.readline()         #将整个文档全部读取进来(形成一个列表),每行作为一个字符串元素
print("1:%s"%content,end="")    #不进行换行content = f.readline()         #将整个文档全部读取进来(形成一个列表),每行作为一个字符串元素
print("2:%s"%content,end="")
f.close()               #关闭文件

2,错误与异常

错误是无法预料到的,而异常是我们可以预料到的,可以针对要发生的异常进行处理

#-*- codeing = utf-8 -*- 
#@Time : 2020/11/19 16:40
#@Author : 招财进宝
#@File : demo3.py
#@Software: PyCharm'''
#发生异常
print("----test-----1---")
f=open("123.txt","r")               #只读模式打开一个不存在的文件,错误一旦发生,后面语句不再执行
print("----test-----2---")          #这句代码不会执行
''''''
#捕获异常
#try看某段代码是否出错
try:print("----test-----1---")f=open("123.txt","r")               #错误一旦发生,后面语句不再执行print("----test-----2---")
except IOError:                     #捕获到了异常,文件没找到属于IO异常(输入输出异常)pass                            #捕获异常后执行的代码''''''
try:print(num)
#except IOError:                 #异常类型想要被捕获,需要一致,这里报道异常不再是IOError,而是NameError(可在控制台查看)
except NameError:pass
''''''
try:print("----test-----1---")f = open("123.txt", "r")  # 错误一旦发生,后面语句不再执行print("----test-----2---")print(num)
except (NameError,IOError):               #将可能产生的所有异常类型,都放到小括号中print("产生错误了")
'''#获取错误描述
'''
try:print("----test-----1---")f = open("123.txt", "r")  # 错误一旦发生,后面语句不再执行print("----test-----2---")print(num)
except (NameError,IOError) as result:               #将可能产生的所有异常类型,都放到小括号中print("产生错误了")print(result)
''''''
#捕获所有的异常(重点)
try:print("----test-----1---")f = open("123.txt", "r")  # 错误一旦发生,后面语句不再执行print("----test-----2---")print(num)
except Exception as result:               #Exception可以承接任何异常print("产生错误了")print(result)
'''#try。。。。finally 和嵌套
#编码时不仅打开读取,还要考虑各种异常,一定要将文件有个关闭的状态
import time
try:f=open("123.txt","r")try:                        #此处因为f是局部变量,所以加了一层try嵌套来执行finaalywhile True:content = f.readline()if len(content) == 0:breaktime.sleep(2)print(content)finally:                    # finally是最后必须执行的,无论前面是否错误f.close()print("文件关闭")except Exception as result:  # Exception可以承接任何异常print("产生异常")print(result)           #打印错误

作业:

  1. 应用文件操作的相关知识,通过Python新建一个文件gushi.txt,选择一首古诗写入文件中
  2. 另外写一个函数,读取指定文件gushi.txt,将内容复制到copy.txt中,并在控制台输出“复制完
    毕”。
  3. 提示:分别定义两个函数,完成读文件和写文件的操作
    尽可能完善代码,添加异常处理。
    此处未添加异常处理
#作业
#写入古诗
f=open("gushi.txt","w")     #以w模式打开,若无可自动创建f.write("窗前明月光,\n")
f.write("疑是地上霜。\n")
f.write("举头望明月,\n")
f.write("低头思故乡。\n")f.close()#定义函数用于复制
gushiList = []
#复制函数中的读取函数
def readFile():f = open("gushi.txt")gushiList=f.readlines()         #readlines()读取得到的是列表f.close()return gushiList
#复制函数中的写入函数
def writeFile(gushiList):f=open("copy.txt","w")for lineTxt in gushiList:print(lineTxt,end="")f.write(lineTxt)f.close()
#用于复制的函数
def copyFile():gushiList = readFile()writeFile(gushiList)copyFile()

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com