python 第10章 文件和异常

本文详细介绍Python中文件的读取和写入操作,包括如何使用with语句安全地打开和关闭文件,逐行读取和处理文件内容,以及如何将数据写入文件。同时,文章还介绍了异常处理和数据存储的相关技巧。

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

1.从文件中读取数据

        with open('文件名') as 文件别名:

            文件变量 = 文件别名.read()

            print(文件变量)

      函数 open()接受一个参数:要打开的文件的名称,python在当前执行的文件所在的目录中查找指定的文件。函数 open()反回一个表示文件的对象。关键字 with在不需要访问文件后将其关闭。也可以调用 open() 和 close()来打开和关闭文件,但这样做如果程序出现bug,导致close()语句末执行,文件将不会关闭。

2.在使用上面的方法打开文件时,相比原始文件,该输入唯一不同的地方是末尾多了个空行, 因为read()到达文件末尾时反回一个空字符中,而将这个空字符串显示出来就是一个空行,要删除空行,可以在print 语句中使用 rstrip() 如:print(变量名.rstrip())

3.文件路径

      当你打开不在程序文件所属目录中的文件,要让python打开不与程序文件位于同一个目录中的文件,需要提供文件路径,它让python到系统特定的位置去查找。

       使用相对路径: with open('当前文件的子文件夹名/文件名') as 文件别名:

       使用绝对路径:可以先定义一个变量,将绝对路径赋值给变量。

            绝对路径变量 = ’绝对路径‘

            with open(绝对路径变量) as 文件别名

4.逐行读取

      with open(文件路径/文件名)as 文件别名:

            for 行变量 in 文件别名:

                  print(行变量)

            注:因文件中,每行末尾有一个换行符,而print()打印进也会加上一个换行符,因此打印出来的结果有空行,要消除这个空行,可以使用 rstrip()

5.创建一个包含文件各行内容的列表

      使用关键字with时,open()反回的文件对象只在with代码块内可用。如果要在with代码块外访问文件的内容,可以with代码块内将文件的各行一个列表中,并在with代码块外使用该列表.

      filename = 'pi_digits.txt'

      with open(filename) as file_object:

            lines = file_object.readlines()

      for line in lines:

            print(line.rstrip())

      readlines()从文件中读取每一行,并将其存储在一个列表中,接下来,该列表存储到变量 lines中,在with代码块外依然能使用这个变量。

6.读取文件时,python将其中的所有文件都解读为字符串,如果读取的时数字,并要将其作为数值使用,就必须使用函数 int() 将其转换为整数,使用函数 float() 将其转换为浮点数。

7.写入文件

        with open('filename','w') as file_object:

        file_object.writ("写入内容")

        注:open('打开的文件名','写入模式')   r: 读模式  w:写模式  a:附加模式

        注:python只能将字符串写入文本文件,要将数值存储到文本文件中,必须先使用函数 str() 将其转换为字符串格式。

8.写入多行,需要在writ()语句中包含换行符: \n

9.如果你要给文件添加内容,而不是覆盖原有内容,可以附加模式打开文件。用附加模式打开文件时,python不会在返回文件对象前清空文件,而你写入到文件的行都将添加到文件末尾,如果指定文件不成在,将创建一个空文件。

10.使用try-except代码块解决异常

        try:

                print(5/0)

        except zeroDivisionError:

                print("You can't diviede by zero!")

        将导致错误的代码块放在一个try代码块中,如果try代码块中的代码运行没有问题,将跳过except代码块,如果try代码块中的代码导致了错误,python将查找这样的except代码块,并运行其中的代码,即其中指定的错误与引发的错误相同。try-except代码块后面还有其它代码,程序将接着运行

11.处理 FileNotFoundError异常

        export FileNotFoundError:

                处理语句

12.文本.split()  它以空格为分隔符将字符串拆分成多个部分,并将这些部分都存储到一个表中,结果是一个包含字符串中所有单词列表,可以再调用 len() 来计算列表长度

13.抛弃异常:

        except 错误名:

                pass

14.pass语句还充当了占位符,它提醒你在程序的某个地方什么都没做,并且以后也许要在这里做什么。

15.决定报告哪些错误

        python的错误处理结构让你能够细致地控制用户分享错误信息的程序,要分享多少信息由自己决定。

16.存储数据

        模块json让你能够将简单的python数据结构转储到文件中,并在程序再次运行时加载该文件中的数据,还可以使用json在python程序之间分享数据

17.注意:JSON(JavaScript Object Notation) 格式最初是为JavaScript开发的,但随后成了一种常见的格式.

18. json.dump()来存储这组数字,函数json.dump()接受两个参数:要存储的数据以及可用于存储的文件对象。

19.使用 json.load()加载存储在文件中的信息到内存。

20.重构:代码能正常运行,但可做进一步的改进,将代码分为一系列完成具体工作的函数,这样的过程叫重构。

21.测试代码

        测试函数

        单元测试和测试用例:python标准库中的模块 unittest 提供了代码测试工具,

        单元测试用于核实函数的某个方面没有问题。

        测试用例 是一组单元测试,这些单元测试一起核实函数在各种情况下的行为都符合要求。

        全覆盖式测试 用例包含一整套单元测试,涵盖了各种可能的函数使用方式。

22.函数编写测试用例,可先导入模块 unittest 以及要测试的函数,再创建一个继承 unittest.TestCase的类,并编写一系列方法对函数行为的不同方面进行测试。

 

 

       

       

 

       

 

 

 

 

 

 

 

 

 

    

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值