10.2.3 附加到文件
如果要给文件添加内容,而不是覆盖原有的内容,可以以附加模式 打开文件。以附
加模式打开文件时,Python不会在返回文件对象前清空文件的内容,而是将写入文
件的行添加到文件末尾。如果指定的文件不存在,Python将为你创建一个空文件。
下面来修改write_message.py,在既有文件programming.txt中再添加一些你酷爱编
程的原因:
write_message.py
filename = 'programming.txt'
❶ with open(filename, 'a') as file_object:
❷ | file_object.write("I also love finding meaning in large datasets.\n") file_object.write("I love creating apps that can run in a browser.\n") |
在❶处,打开文件时指定了实参'a' ,以便将内容附加到文件末尾,而不是覆盖文
件原来的内容。在❷处,又写入了两行,它们被添加到文件programming.txt末尾:
programming.txt
I love programming.
I love creating new games.
I also love finding meaning in large datasets.
I love creating apps that can run in a browser.
最终的结果是,文件原来的内容还在,后面则是刚添加的内容。
动手试一试
练习10-3:访客 编写一个程序,提示用户输入名字。用户做出响应后,将其
名字写入文件guest.txt中。
练习10-4:访客名单 编写一个while 循环,提示用户输入名字。用户输入
名字后,在屏幕上打印一句问候语,并将一条到访记录添加到文件
guest_book.txt中。确保这个文件中的每条记录都独占一行。
练习10-5:调查 编写一个while 循环,询问用户为何喜欢编程。每当用户
输入一个原因后,都将其添加到一个存储所有原因的文件中。
10.3 异常
Python使用称为异常 的特殊对象来管理程序执行期间发生的错误。每当发生让
Python不知所措的错误时,它都会创建一个异常对象。如果你编写了处理该异常的
代码,程序将继续运行;如果未对异常进行处理,程序将停止并显示traceback,其
中包含有关异常的报告。
异常是使用try-except 代码块处理的。try-except 代码块让Python执行指定
的操作,同时告诉Python发生异常时怎么办。使用try-except 代码块时,即便出
现异常,程序也将继续运行:显示你编写的友好的错误消息,而不是令用户迷惑的
traceback。
10.3.1 处理ZeroDivisionError 异常
下面来看一种导致Python引发异常的简单错误。你可能知道,不能用数除以0,但还
是让Python这样做:
division_calculator.py
print(5/0)
显然,Python无法这样做,因此你将看到一个traceback:
Traceback (most recent call last):
File "division_calculator.py", line 1, in <module>
print(5/0)
❶ ZeroDivisionError: division by zero
在上述traceback中,❶处指出的错误ZeroDivisionError 是个异常对象。
Python无法按你的要求做时,就会创建这种对象。在这种情况下,Python将停止运
行程序,并指出引发了哪种异常,而我们可根据这些信息对程序进行修改。下面来
告诉Python