首页 » 父与子的编程之旅:与小卡特一起学Python » 父与子的编程之旅:与小卡特一起学Python全文在线阅读

《父与子的编程之旅:与小卡特一起学Python》24.5 把时间保存到文件

关灯直达底部

在本章最前面我们提到过,有时需要把一个时间值保存到(硬盘上的)文件中,这样一来,即使程序没有运行,这条信息也能得到保存。如果程序结束时保存当前时间(now),程序再次启动时就可以检查这个时间,并打印这样的一条消息:

It has been 2 days, 7 hours, 23 minutes since you last used this program.  

当然,大多数程序不会这样做,不过确实有一些程序需要知道已经有多长时间空闲(没有运行),电子宠物程序就是这样一个例子。就像几年前流行的电子宠物钥匙链一样,你可能希望即使你没有使用程序,它仍然会跟踪时间。例如,如果你结束程序之后过了两天再来看你的电子宠物,它应该会非常饿!程序要知道宠物有多饿,只有一个办法,就是要知道从最后一次喂食到现在隔了多长时间。这也包括程序关闭的时间。

将时间保存到一个文件中有两种方法。可以把一个字符串直接写入文件,如下:

timeFile.write ("2012-10-24 14:23:37")  

要读这个时间戳时,可以使用一些字符串方法(如 split)将这个字符串分解为各个部分,如天、月、年以及小时、分和秒。这种做法应该是可行的。

另一种方法是使用 pickle 模块,这在第 22 章介绍过。pickle 模块允许你把任何类型的变量保存到文件中,也包括对象。由于我们要使用 datetime 对象跟踪时间,所以使用 pickle 可以很容易地把时间对象存入文件,还能很方便地读取。

下面来看一个非常简单的例子,它会打印一条消息,指出程序最后一次运行的时间。这个程序要完成下面的工作。

  • 查找一个 pickle 文件并打开这个文件。Python 有一个 os(操作系统 operating system 的简写)模块,可以告诉我们这个文件是否存在。这里要使用的方法名为 isfile

  • 如果文件存在,就认为程序之前运行过,得出它最后一次运行的时间(根据 pickle 文件中的时间得出)。

  • 然后用当前时间写一个新的 pickle 文件。

  • 如果这是程序第一次运行,就没有 pickle 文件可以打开,所以会显示一条消息,指出我们创建了一个新的 pickle 文件。

代码清单 24-3 给出了这个程序的代码。可以试试看结果如何。

代码清单 24-3 使用 pickle 把时间保存到文件中

现在已经万事俱备,可以建立简单的电子宠物程序了,下一节就来建立这样一个程序。