Week0 作业

本周整体任务概述:

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

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

  • 发布: 发布到各自仓库的 _src/om2py0w/0wex1/ 目录中
  • 指标:
    • 包含软件使用说明书: README.md
    • 能令其它学员根据说明书,运行系统,完成所有功能

大概在笨办法学python 的前20课能解决输入并保存的问题。

涉及到的参数

  • raw_input() 读取输入
    参考:笨办法第十一节 Asking Questions

  • import 将python的功能,引入到你当前的脚本,这样解释不知道对不对。
    argv(rgument variable) 功能 (unpack) 类似解开包袱的功能,把argv中的东西解开,将所有参数一次赋予左边的变量名字
    参考 Exercise 13: Parameters, Unpacking, Variables

  • open() 打开一个文件,但并不是读取,只是一个打开的动作,read()读取文件内容
    参考 Exercise 15: Reading Files

  • close 相当于保存文件. readline 读取文本文件中的一行. truncate 清空文件 write(内容) 把内容这两个子写入文件
    参考:Exercise 16: Reading and Writing Files

简单版本 v1.0

  1 # -*- coding: utf-8 -*-                                                    
  2 from sys import argv
  3 ¬
  4 script, filename = argv
  5 ¬
  6 print "打印历史日记 %r." % filename
  7 DiaryFile = open(filename)
  8 print DiaryFile.read()
  9 ¬
 10 DiaryFile = open(filename, 'a+')
 11 print "---------请写入日记---------"
 12 content = raw_input(">>>  : ") + '\n'
 13 DiaryFile.close()

使用方法 python mydaily_1.0.py mydaily.txt

一次只能写入一行,而且不带日记,继续改进。

添加了时间 v1.1

参考 Get Today’s Current Date and Time

加入时间 import time

t = time.strftime('-------%Y-%m-%d-------')  

让日记输出带有时间

# -*- coding: utf-8 -*-
from sys import argv
import time

script, filename = argv

print "打印历史日记 %r." % filename
DiaryFile = open(filename)
print DiaryFile.read()

DiaryFile = open(filename, 'a+')
t = time.strftime('-------%Y-%m-%d-------')
print (t+'\n')
content = raw_input(">>>  : ")  + '\n'
DiaryFile.write('\n' + t+ '\n' +content)
DiaryFile.close()

添加while循环 v1.1

加入函数def 把写入的步骤定义成函数

def Wdiary():¬
     print "-------今天是" + time.strftime("%Y-%m-%d")¬
     print "-------如果想退出请按Q"¬
     DiaryFile = open('mydiary.txt','a+')¬
     t = time.strftime('-------%Y-%m-%d-------')¬
     DiaryFile.write('\n' +t+ '\n')

加入循环

参考 While loops

while True:
    content = raw_input("请写日记>> ")

    if content.upper() in ['Q']:
       break

     DiaryFile.write(content+'\n')

使用时当前需要当前目录有mydiary.txt 如果没有,会报错,这点不好,需要再改进下

# -*- coding: utf-8 -*-
import time

from os.path import exists

DiaryFile = open('mydiary.txt','r')
print DiaryFile.read()
print "-------以上是历史日记------\n"
DiaryFile.close()

def Wdiary():
    print "-------今天是" + time.strftime("%Y-%m-%d")
    print "-------如果想退出请按Q"
    DiaryFile = open('mydiary.txt','a+')
    t = time.strftime('-------%Y-%m-%d-------')
    DiaryFile.write('\n' +t+ '\n')

    while True:
    content = raw_input("请写日记>> ")

    if content.upper() in ['Q']:
        break
    DiaryFile.write(content+'\n')

Wdiary.close()

添加os.path exists v1.2

20151104 更新,解决mydiary.txt文件不存在报错问题

添加了

from os.path import exists 
if exists(DiaryFile) == True: 

判断文件是否存在,如果不存在就新建一个,而不会报错