Python学习笔记——文件操作、异常捕获、模块

本文介绍了Python中的文件读取和写入操作,包括open函数、读取模式、文件行处理以及异常捕获,同时提及了模块导入的限制和Python包的使用规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 食用说明:本笔记适用于有一定编程基础的伙伴们。希望有助于各位!

文件读取

文件操作比较常见,通常我们需要对文件进行读取操作:

    f1 = open('assets/Files/测试文件.txt', 'r', encoding='UTF-8')

    # 辨别是否可读
    print(f1.readable())

    # 读取具有连贯性,每次读取一行固定字节,无参数时读取所有内容
    print(f1.read(5))

    # 读取文件行,读取具有连贯性,每次读取一行固定字节,无参数时读取一整行
    print(f1.readline(2))

    # 读取文件行,读取具有连贯性,无参数读取所有内容,并返回列表,有参数时即读取的行数,同样返回列表
    print(f1.readlines(1))

通常情况下,我们会对文件循环进行读取,或是对文件所有内容读取后逐步分析:

    fileLinesList = f1.readlines()
    f1.close()
    i1 = iter(fileLinesList)
    while True:
        try:
            print(next(i1))
        except StopIteration:
            print('文件读取完毕')
            break
  • 上面的语句是简单的文件读取方式,对读取到的文件行列表进行迭代
文件写入

读取和写入的形态类似,具体操作如下:

    f1 = open('assets/Files/测试文件.txt', 'r+', encoding='UTF-8')
    print(f1.writable())

    f1.seek(0, 2)
    newLinesList = ["Hello world1\n", "Hello world2\n", "Hello world3\n", "Hello world4\n"]
    for item in newLinesList:
        f1.write(item)

    f1.seek(0)

    print(f1.read())

具体的读写模式:

一个综合运用:

    infoList = [
        {"name": "Polaris", "age": 18, 'sex': '男'},
        {"name": "PolarisX", "age": 19, 'sex': '男'},
        {"name": "PolarisY", "age": 20, 'sex': '男'},
        {"name": "PolarisZ", "age": 21, 'sex': '女'},
    ]

    f1 = open('assets/Files/info.txt', 'w', encoding='UTF-8')
    # 写入标头
    for key in infoList[0].keys():
        f1.write(key)
        f1.write('\t')

    f1.write('\n')

    # 写入数据
    for item in infoList:
        for key in item.keys():
            f1.write(str(item[key]))
            f1.write('\t')
        f1.write('\n')

    if f1.readable():
        print(f1.read())
  • 上面的例子中,我们将一个表数据写入到了文件中 
异常捕获

我们在运行程序时,常会遇到各种异常导致程序中断,解决方式如下:

    try:
        f1 = open('assets/Files/abc.txt', 'r', encoding='UTF-8')

    except Exception as e:
        print(COLOR.RED + '文件读取失败')
        print(COLOR.BLUE + str(e))
  • 当我们希望打开一个文件时,而此文件不存在时,会报错,为了捕获此异常可以通过try...except来取得异常
  • 此处使用Exception捕获所有异常,并使用as进行别名,
  • 具体的异常有很多,具体可以查看官方文档:具体异常
    try:
        f1 = open('assets/Files/abc.txt', 'r', encoding='UTF-8')

    except Exception as e:
        print(COLOR.RED + '文件读取失败')
        print(COLOR.BLUE + str(e))

    else:
        print(f1.read())
    finally:
        print(COLOR.WHITE + '文件读取操作完毕')
  •  异常未触发时会进入else语段
  • finally为必定触发语段,无论是否触发异常
生成一个异常

当然有的时候我们希望中断程序,提示异常:

    raise Exception('自定义异常')
  • 我们需要在Exception方法中填写异常内容,用于中断程序时的异常提示
断言异常

断言异常用于简化普通的判断异常:

    # 当变量大于5时,报错
    num1 = 10
    # 常规的判断
    if num1 >= 5:
        raise Exception('变量大于5')

    # 快捷的判断
    assert num1 < 5, '变量大于5'
  • 上处代码,就是一个简单断言异常,其格式可以等效于:

语法格式如下:

assert expression

等价于:

if not expression:
    raise AssertionError
模块的导入

  • 在导入操作时,我们使用from module import * 可以通过在模块中加入‘__all__’变量定义来限制全导入方式,具体意义如下: 
__all__ = [
    'add',
]


def add(*args):
    return sum(args)


def minus(mainNum, *subNums):
    return mainNum - sum(subNums)
  • 上面的这串代码定义两个方法,我们希望只导出add,故将其加入到all变量中,当我们使用from module import *时就会限制minus方法无法被使用,但如果使用其他方式依旧可以导入此方法
python包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言行物恒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值