0
点赞
收藏
分享

微信扫一扫

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

花明 2024-07-24 阅读 3
爬虫python

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

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+=1

f.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嵌套来执行finaaly
        while True:
            content = f.readline()
            if len(content) == 0:
                break
            time.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()
举报

相关推荐

0 条评论