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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值