python-26-零基础自学python-如何创建文件、读取数据、处理多个文件及程序异常处理等

学习内容:《python编程:从入门到实践》第二版第10章

知识点:

程序异常如何处理?try-except-else

多个文件处理

创建文件:在文件中储存数据

练习内容:

练习10-8:猫和狗 创建文件cats.txt和dogs.txt,在第一个文件中至少存储三只猫的名字,在第二个文件中至少存储三条狗的名字。编写一个程序,尝试读取这些文件,并将其内容打印到屏幕上。将这些代码放在一个try-except代码块中,以便在文件不存在时捕获FileNotFound错误,并显示一条友好的消息。将任意一个文件移到另一个地方,并确认except代码块中的代码将正确执行。

练习10-9:静默的猫和狗 修改你在练习10-8中编写的except代码块,让程序在任意文件不存在时静默失败。

我的代码&运行结果:

filename = 'cats.txt'
with open(filename,'w') as file_object:
    file_object.write('rongrong\n')
    file_object.write('maomao\n')
    file_object.write('xiluo\n')

filename = 'dogs.txt'
with open(filename,'w') as file_object:
    file_object.write('pudding\n')
    file_object.write('little black\n')
    file_object.write('snow\n')

def print_contents(filename):
    try:
        with open(filename) as file_object:
            contents = file_object.read()
    except FileNotFoundError:
        print(f"{filename}文件不存在")
        pass
    else:
        print(f"文件内容是:{contents}")

filenames = ['cats.txt','dogs.txt','rabbit.txt']
for filename in filenames:
    print_contents(filename)

 运行结果

注意点:

1.创建新文件夹时,以下这行代码中w没有加引号,这是常错点;

另一个常错点是:file_object 忘记下划线!!!

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

2.error的名字在新的程序中不是FileNotFound,而是FileNotFoundError,见下图提示

 3.做本题时为了复习,创建文件夹用的是 with open(filename,‘w’)as file_object:的方法

write在文件中输入内容。

4.定义一个方法,也就是打印文件内容的程序,即 def print_contents(filename):

这里解答我上次提出的问题,方法的使用不用在类class里面依然适用。

5.try except else中,except容易拼写错误

except中为了不出问题,加上pass,按理说不加也可

6.多个文件处理中,文件列表 使用for filename in filenames:进行遍历,

7.最后调用打印方法的时候,不需要句点法,而是直接用print_contents(filename)就可以使用,也一定程度上解决之前关于def函数 如果不在类里面的调用方式的问题。

练习10-9:静默的猫和狗 修改你在练习10-8中编写的except代码块,让程序在任意文件不存在时静默失败。

这个只需要改一行代码,except里面改为pass即可

filename = 'cats.txt'
with open(filename,'w') as file_object:
    file_object.write('rongrong\n')
    file_object.write('maomao\n')
    file_object.write('xiluo\n')

filename = 'dogs.txt'
with open(filename,'w') as file_object:
    file_object.write('pudding\n')
    file_object.write('little black\n')
    file_object.write('snow\n')

def print_contents(filename):
    try:
        with open(filename) as file_object:
            contents = file_object.read()
    except FileNotFoundError:
        #print(f"{filename}文件不存在")这里加井号,下面变成pass即可,这样处理可以不显示
        pass
    else:
        print(f"文件内容是:{contents}")

filenames = ['cats.txt','dogs.txt','rabbit.txt']
for filename in filenames:
    print_contents(filename)

相关推荐

  1. Python基础文件处理

    2024-07-11 07:56:01       31 阅读
  2. python如何读取文件

    2024-07-11 07:56:01       44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 07:56:01       101 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 07:56:01       108 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 07:56:01       91 阅读
  4. Python语言-面向对象

    2024-07-11 07:56:01       98 阅读

热门阅读

  1. 深入理解基本数据结构:栈详解

    2024-07-11 07:56:01       24 阅读
  2. 树形结构的一种便捷实现方案

    2024-07-11 07:56:01       28 阅读
  3. Julia 日期和时间

    2024-07-11 07:56:01       22 阅读