栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

第四章 Python文件操作和异常

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第四章 Python文件操作和异常

一、文件操作

1)文件打开:open()函数
语法:open(file=‘文件名称’,mode=‘访问模式’,encoding=‘UTF-8’)
①file:文件名称
②mode:设置打开文件的模式(访问模式:读:r;写:w;追加:a;读+写:w+)
③encoding:编码方法 UTF-8(没有中文可以不写)
注意:可以只打开和关闭文件,不进行任何的读写操作
2)写入文件
①‘w’模式逻辑:如果文件不存在会自动创建;文件所在目录一定要存在;内容追加写入的时候,文件之前的全部内容覆盖;写的时候不要读文件
语法:对象.write('内容‘’)

# mode = 'w' 如果文件不存在会自动创建文件
# f = open(file='test.txt',mode='w',encoding='UTF-8')
f = open('test.txt','w','UTF-8')
f.write('欢迎来到德莱联盟,')
f.close()

②’a’ 模式:追加写入;如果文件不存在会自动创建;文件所在目录一定要存在;内容追加写入的时候,会在文件之前内容加上写入

# mode = ‘a’ 追加写入
f = open(file='test.txt',mode='a',encoding='UTF-8')
f.write('欢迎来到德玛西亚联盟,')
f.close()

③写入文件的绝对路径:路径加r;忽略转义

# 写入文件的绝对路径
# r:路径加r 忽略转义
f = open(file=r'D:python项目lesson_0417filetest.txt',mode='a',encoding='UTF-8')
f.write('绝对路径,')
f.close()

④写入文件的相对路径:

# r:路径加r 忽略转义
f = open(file=r'..filetest.txt',mode='a',encoding='UTF-8')
f.write('相对路径,')
f.close()

3)读取文件
①read()语法:文件对象.read(num);num 表示要从文件中读取的数据的长度(单位是字节),如果没有传入 num ,那么就表示读取文件中所有的数据。

# 读取文件
# mode = ‘r’ 读取全部文件
f = open(file=r'D:python项目lesson_0417filetest.txt',mode='r',encoding='UTF-8')
print(f.read())
f.close()

②readlines():readlines 可以按照 行 的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。

# 按照行来读取文件 一次性读取全部文件列表
f = open(file=r'D:python项目lesson_0417filetest.txt',mode='r',encoding='UTF-8')
print(f.readlines())
f.close()

③readline():依次一次读取一行内容

# 读取文件第几行数据
f = open(file=r'D:python项目lesson_0417filetest.txt',mode='r',encoding='UTF-8')
print(f.readline())
print(f.readline())
f.close()

④读取文件的另外一种写法:with open() as 写文件

with open(file=r'D:python项目lesson_0417filetest.txt',mode='r',encoding='UTF-8') as f:
    all = f.read()
    print(all)

⑤动态的获取文件的绝对路径:
os.path.abspath(path) 返回绝对路径
os.path.dirname(path) 返回文件路径
os.path.join(path1[, path2[, …]]) 把目录和文件名合成一个路径

# 动态获取当前目录、文件所在路径:绝对路径  判断路径是否存在
import os
print(os.path.dirname(__file__))

print(os.path.abspath(__file__))

print(os.path.exists(r'D:/python项目/lesson_0417/file'))
二、 异常

1)异常捕捉原理:解释器代码报错后不能执行后续代码,为了不干扰后面的代码执行,使用异常捕捉方法
2)捕获异常方法
①捕获异常语法:

try:
     可能发生错误的代码 
except: 
     如果出现异常执行的代码
# 异常捕捉 
try:
    lista = [1,2,3,4]
    print(lista[5])
except:
    print('索引超出范围')
    print(lista)

②捕获具体类型异常语法:

try:
     可能发生错误的代码 
except 具体异常类型: 
     如果出现异常执行的代码

③捕获异常描述信息

# 捕获异常具体类型
try:
    print(3/0)
except ZeroDivisionError as e:
    print(f'分母不能为0:{e}')

④大部分不知道类型错误信息,可以用最大的异常解决(Exception),Exception是所有程序异常类的父类

# 大部分不知道类型错误信息,可以用最大的异常解决(Exception)
try:
    print(3/0)
except Exception as e:
    print(f'分母不能为0:{e}')

⑤捕获多个异常,可以把要捕获的异常的名字,放到except后,并使用元组的方式进行存储

try:
    print(1/0) 
except (NameError,ZeroDivisionError): 
    print('有错误')

⑥else用法:else表示的是如果没有异常要执行的代码

# 如果出现异常,后续代码不执行
try:
    print(3/0)
except Exception as e:
    print(f'分母不能为0:{e}')
else:
    print('没有异常可以执行')

⑦finally用法: 表示的是无论是否异常都要执行的代码

# 不管有没有异常 都要执行
try:
    print(3/0)
except Exception as e:
    print(f'分母不能为0:{e}')
else:
    print('没有异常可以执行')
finally:
    print('不管有没有异常,我都要执行')

实例场景:异常抛出,并给上一层处理

# 实际场景:抛异常 raise
# x = 10
# if x>5:
#     raise Exception(f'x不能大于5,x值:{x}')
# 解决不了问题,抛给上一层
def tester():
    try:
        print(3 / 0)
    except Exception as e:
        print(f'分母不能为0:{e}')
        raise e
def leaer():
    try:
        tester()
    except Exception as e:
        print(f'分母不为0,我可以处理{e}')
leaer()
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/822414.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号