构想
- 用raw_input()获取输入,并存入一个txt文件当中
- 每次写入用户输入之前,先写入一行当前的日期和时间
- 提供一些可供用户操作的命令,比如回看、删除、搜索等
基于前两个构想,写出代码如下:
#-*-coding: utf-8-*-
import datetime
diary = raw_input('How is your day today? -->')
current_time = datetime.datetime.now()
file = open("DiaryPool.txt","a")
file.write (current_time.__format__('%c')+"\n\n")
file.write(diary+"\n")
file.close()
print (":)")
如何令其可以一直运行,等待我们的输入
- 或是接受其它命令?
- 怎么退出脚本?
Google的结果,有两种解决途径
- 比较容易理解的版本:
text = "" stopword = "" while True: line = raw_input() if line.strip() == stopword: break text += "%s\n" % line print text
- 看起来更简洁的版本
查了iter的文档, 但是在这种情况下,iter第一个input必须是callable object。sentinel = '' # ends when this string is seen for line in iter(raw_input, sentinel): pass # do things here
- So, 加入了lambda,将这一部分变成callable,参考这里。但是具体的原理还是不理解啦~还要进一步学习:) 于是,代码修改为:
#-*-coding: utf-8-*-
import datetime
text = ""
print ('How is your day today? -->')
sentinel = 'quit()' # ends when this string is seen
for line in iter(lambda: raw_input(), sentinel):
text += "%s\n" % line
current_time = datetime.datetime.now()
file = open("DiaryPool.txt","a")
file.write (current_time.__format__('%c')+"\n")
file.write(text+"\n\n")
file.close()
print ("-->Diary is finished. Well done: )")