基于之前已经建立的webapp,这里我们来了解处理文件。
目前,已经建立的web应用可以接收web浏览器的输入(以phrase和letters的形式),完成一个search4letters调用,然后向正在等待的web浏览器返回结果。一旦工作完成,web应用就会丢掉它的所有数据。
Python支持打开、处理和关闭文件
Python提供了内置支持来实现文件的打开(open)、处理(process)和关闭(close)。这种通用技术允许你打开一个文件,以某种方式保留其数据,然后在完成时关闭文件。
open
对todos.txt文件调用open,这里使用追加模式,因为我们计划为这个文件增加数据,如果open调用成功,解释器会返回一个对象(称为流),这是实际文件的一个别名,这个对象(流)将赋给一个变量,名为todos

'a'打开一个文件来追加数据,保留文件的内容,向文件末尾增加新数据;
'w'打开一个文件来写数据,如果文件中已经包含数据,在继续写之前会清空文件中的数据;
'r'打开一个文件来读数据,这是默认模式,如果没有提供第二个参数,就假设为'r';
'x'打开一个新文件来写数据,如果文件已经存在则失效。
这样一来,我们在代码中就可以用todos变量指示文件(其它编程语言称之为文件句柄)。调用open后,文件已打开,下面使用print来写文件。注意print有一个额外的参数(file),用来指定要写的文件流。

此时,我们的任务列表不再需要增加其它记录,下面调用close方法来关闭文件。
close
todos.close()
如果忘记调用close,很可能会丢失数据。
从现有文价读取数据
既然已经在todos.txt文件中增加了一些数据行,下面来看从这个文件读取所保存的数据并显示在屏幕上需要的“打开、处理和关闭”代码。

使用一个for循环从这个文件读取各行,这样一来,for循环的迭代变量(chore)会赋为从文件读取的当前数据行,每次迭代会为chore赋一个数据行。

相比较于open、close方法,with语句更方便
注意看:
tasks = open('todos.txt')
for chore in tasks:
print(chore, end=' ')
tasks.close()
上面这段代码等效于:
with open('todos.txt') as tasks #将文件流赋至一个变量
for chore in tasks:
print(chore, end=' ')
相比较于上一种方法,with语句的代码组没有close调用,因为with语句足够聪明,只要它的代码组结束,就会代表你调用close。
by PengSW_10 on 2019/1/29
网友评论