Python蟒蛇书学习笔记——第十章 文件和异常
#初稿完成时间:2022/7/4
#作者:XP钉子户(原号忘记密码了_(:з」∠)_)
本章主要提到异常和json模块。异常是Python创建的特殊对象,用于管理程序运行时可能出现的错误;json模块可以帮助程序保存用户数据,避免程序停止运行后丢失数据。
下面为本笔记的目录,可以点击目录跳转到对应的部分阅读。
10.1 从文件中读取数据
10.1.1 读取整个文件
例如,与主程序存储在同一目录下的test.txt文件的内容如下:
3.1415926535
8979323846
2643383279
若想读取test.txt的内容并打印出来,则实现方法为:
with open('test.txt') as file_object:
contents = file_object.read()
print(contents)
这其中,open()函数打开了同一目录所存储的test.txt,并返回了一个文件对象(命名为file_object),然后使用read()方法来读取文件的全部内容,最后将文件的内容输出到屏幕上。
这里的"with"可以保证文件读取的操作只在语句内部适用,出了语句文件就会自动关闭。
请注意,有些文件会在末尾留下换行符或者若干空格,若输出时不想输出换行符和空格,则可以用rstrip():
print(contents.rstrip())
10.1.2 相对文件路径和绝对文件路径
相对文件路径:为一种简略的写法,表示所操作的文件对应于主程序的位置。例如,当test.txt与main.py放在同一文件目录时,其相对文件路径可以直接写成’open.txt’;当test.txt放在main.py所在文件夹的子文件夹resources里面时,其相对文件路径为’resources//test.txt’。
需要注意的是,尽管Windows系统不使用斜杠’/‘而是反斜杠’\‘,但是在Python里面仍然用斜杠表示。而且由于转义字符(如’\t’、‘\n’)可能会对文件路径产生干扰,文件路径里面所有的斜杠应该都进行转义,即’//'。
绝对文件路径:文件位于存储设备中的准确位置,与主程序的位置无关。例如D://Python//test.txt。
10.1.3 逐行读取
读取文件时,常常不需要全部读取完文件的所有内容,而是逐个检查每一行,选取其中的若干行。此时可对文件对象使用for循环:
with open("test.txt") as file_object:
for line in file_object:
print(line)
此时程序输出如下:
3.1415926535
8979323846
2643383279
可以发现此时空白行变多了。这是因为每一行的末尾都有换行符,而函数在调用print()时也会默认加上一个换行符,因此每行末尾都有两个换行符:一个来自文件,另一个来自print()。根据10.1.1的说法,要想删去空白行,仅需调用rstrip()方法即可。
10.1.4 创建一个包含文件各行内容的列表
若想在with代码块外使用文件各行内容,则可以在with代码块内把每一行的内容都存储到一个列表里。