极简日记系统

任务要求

完成一个极简交互式日记系统,需求如下:

  • 一次接收输入一行日记
  • 保存为本地文件
  • 再次运行系统时,能打印出过往的所有日记

代码仓库

开发过程

~ 芝麻星中"第一周行动"卡包中已经将任务进行初步分解, 我主要按照分解的任务依次进行, 必要时做进一步任务分解.

脚本调用

  • 创建.py文件,每次在CLI中以python main.py运行之。
只有 .py 的文件才是我们应该持续修订的开发容器.
    ——ZoomQuiet

调用参数

  • 采用命令行参数(Command Line Arguments)
  • import sys
  • 调用方法: python main.py argv1 argv2 ...
  • main.py是第一个参数
  • 参数个数与main.py中定义的个数相同, 参数过多或过少都会产生ValueError

输入中文

  • python main.py 中文 未出现异常.

持续交互

一次接收输入一行日记

~ 这里开始解决任务需求, 将任务需求进一步拆分. ~ 这里需要解决两个问题, 一个是持续运行, 等待继续输入或退出; 一个是如何退出.

  • 持续运行
    • 不想每输入一句话都提示是否要继续
    • while True 循环
    • 注意一定要退出
  • 退出方式:
    • 希望 control-Ccontrol-D 退出
    • 注意: except KeyboardInterupt 之后一定要 break, 否则无法退出无限循环
    • 另一种退出方式是 sys.exit(exit_message), 无须 break
    • 小问题: 在用 control-C 退出时,会在 exit_message 前多了一个^C字符.

输出为文件

保存为本地文件

~ 这里可进一步拆分为文件打开, 文件读取, 文件读入, 文件保存关闭.

  • 文件打开
    • open(file_name, mode)
    • 文件读入
    • file.write(message)
    • 运行发现file.write并不会写入换行符
    • 注意要写入换行符'\n'
  • 文件关闭
    • file.close()
    • 一定要在退出前关闭文件
    • 不关闭会怎样?
    • 是否自动保存?

回读文本数据

再次运行系统时,能打印出过往的所有日记

~ 任务进一步分解: 确认文件内容不为空, 文件读取并print

增加时间

  • 简单实现

      import time
      print time.asctime() # or time.ctime()
    
    • 优点: 代码少
    • 缺点: 输出时间格式固定, 可用字符串拆分重组

开发心得

  • 本周任务卡片中已经帮我们把任务分解, 这给我们做了一个很好的示范, 以后即使没有我们也要自己对任务进行分解, 先分解成大块, 大块完成不了就再进一步细分, 这样一步一步完成心里会比较踏实
  • 要努力克服完成一小步所产生的巨大的膨胀感, 以及由此产生的想关掉编辑器干点别的的念头.
  • 遇到长篇英文文档就不想读, 需改进方法?
  • @一休君所说的 https://docs.python.org/2/index.html 中的快速搜索框是个好东西.

下一步任务

  • [ ] 任务中说"先不管数据结构", 这是什么意思?
  • [ ] 中文编码问题? 尚未遇到坑
  • [ ] time 格式的定制输出, e.g. 2015-10-21 16:43
  • [ ] 阅读材料中推荐的DOCOPT的作用?