介绍
在古埃及法老的宫殿中,一幅充满神秘魅力和复杂象形文字的场景展开了。埃及女王凭借其深邃的智慧,遇到了一个严峻的挑战:用于维持尼罗河洪水平衡的神圣文字有永远失传的风险。你作为一位值得信赖的智者,被召唤到宫殿,利用 Python 的 finally 块的力量构建一个可靠的系统,以确保这些文字得以保存。
你的目标是打造一个坚不可摧的文字守护者,即使面对不可预见的错误也能履行职责。运用你的技能,你将指导构建 Python 脚本,通过 finally 块处理异常和保证执行的操作,确保女王的神圣文字能经受住任何考验。
构建 try - except - finally 的神殿
在这一步中,你将通过创建一个在执行过程中能够抵御任何潜在故障的 Python 文件,来为你的文字守护者奠定基础。你将使用 Python 的 try、except 和 finally 块来完成此操作。
在 ~/project 中打开一个名为 transcript_keeper.py 的文件。在这个文件中,编写一个 Python 脚本,尝试从一个可能不存在的文件中读取一份重要的文字记录。如果文件缺失,处理该异常,并使用 finally 块打印一条消息,确保已经执行了一些关键的清理操作。
以下是要放入 transcript_keeper.py 中的代码:
def preserve_script():
try:
with open('/home/labex/project/sacred_script.txt', 'r') as file:
contents = file.read()
print(contents)
except FileNotFoundError:
print('The sacred script cannot be found.')
finally:
print('Ensuring the preservation environment remains intact.')
preserve_script()
现在,在终端中使用以下命令运行你的脚本:
python3 ~/project/transcript_keeper.py
如果 sacred_script.txt 不存在,它应该显示错误消息,然后是 finally 块的消息:
The sacred script cannot be found.
Ensuring the preservation environment remains intact.
将逻辑铭刻于石
在创建了基本结构之后,现在是时候将保护逻辑铭刻于石,使其永久保存了。在这一步中,你将通过添加无论读取操作是否成功都必须始终执行的操作,来增强文字守护者。
修改 transcript_keeper.py,在 finally 块中添加一个模拟的清理操作,该操作表示将脚本环境的状态保存到日志文件中。
在 transcript_keeper.py 的 finally 块末尾添加以下内容:
def preserve_script():
try:
with open('/home/labex/project/sacred_script.txt', 'r') as file:
contents = file.read()
print(contents)
except FileNotFoundError:
print('The sacred script cannot be found.')
finally:
print('Ensuring the preservation environment remains intact.')
with open('/home/labex/project/preservation_log.txt', 'a') as log_file:
log_file.write('Preservation check completed\n')
preserve_script()
再次运行修改后的脚本,并检查 preservation_log.txt 是否有日志条目。
终端上应显示以下信息:
$ python3 ~/project/transcript_keeper.py
The sacred script cannot be found.
Ensuring the preservation environment remains intact.
$ cat /home/labex/project/preservation_log.txt
Preservation check completed
总结
在这个实验中,你踏上了一段前往古埃及的旅程,在那里你运用对 Python 的 finally 块的了解,确保了女王神圣文字记录的连续性。借助 finally 块,你创建了一个强大的系统,该系统能保证某些操作(如记录日志)无论在执行过程中遇到任何错误都会执行。
通过这次神秘的冒险,你了解了清理操作的重要性以及如何使用 Python 的 finally 块来实现它们。这个安全网确保了你的脚本的关键操作能够完成,让你对代码的韧性充满信心。愿你在 Python 的领域中的旅程继续像古埃及的古老智慧一样具有启发性。



