Software is grown,not built.
bill de hÓra
学习完基础,按照进度今天应该是做一个自动备份的编程,但是这两天边上没电脑,只能手机先摘记。虽然没有在电脑上用markdown方便,但了胜于无。
主题:对所有重要文件(如coding)做备份
写软件,总结有以下这些阶段:
1.What(Analysis分析)
2.How(Design设计)
3.Do it(Implementation实施)
4.Test(Testing or Debugging测试)
5.Use(Operation or Deployment使用)
6.Maintain(Refinement改善)
书中也是因此,特意用了四个vision来阐述,由粗到精,一步一步围绕主题在不同阶段分析怎么去编程去改善。
分析:
- 文件和目录备份在一个数列中;
- 备份必须储存在一个主备份目录下;
- 文件要打包成一个zip文件;
- zip档案用当前日期和时间来命名;
- 用标准的zip命令,Linux和Unix下默认可利用。(Windows用户要从GnuWin32 project page下载安装zip命令,并将C:\Program Files\GnuWin32\bin添加到系统路径环境变量中。
解决:
First version
import os
import time
#1.The files and directories to be backed up #are specified in a list.
source=['''C:\\My Documents''']
#Wo have to use double quotes inside a #string for names with space in it.Wo could #have also used a raw [r'C:\My Documents'].
#2.The backup must be stored in a main backup directory.
taget_dir='E:\\backup'
#3. The files are backed up into a zip file.
#4. The name of the zip archive is the current date and time
taget=taget_dir+os.sep+\time.strftime('%Y%m%d%H%m%S')+'.zip'
#Create target directory if it is not present
if not os.path.exists(target_dir):
os.mkdir(target_dir)
#5. We use the zip command to put the files in a zip archive
zip_command='zip -r{0}{1}'.format(target,''.jion(source))
# Run the buckup
print('Zip command is:')
print(zip_command)
print('Running:')
if os.system(zip_command)==():
print('Successful backup to',target)
else:
print('Backup FAILED')
Second version
make some refinement
一个更好的文件命名——在主备份目录下,用当前日期创建目录,里面文件用时间来命名
- 优点1.备份显得有层次,因而更容易管理
- 优点2.文件名更短
- 优点3.分开的目录有助于检查是否每天都备份了,看下有没有当天目录就明了
Third Version&Forth Version
有时需要将较大的变更也添加到备份的文件名中,这样更加一目了然。
第三和第四版本是解决同一设想,但是前者有个bug,需要我们把它找出来。
简单一记,手机写还是有点不习惯。
最后附一个斐波那契数列,第一、二数为0,1,之后的数为前面两者之和。。
Python简便,几句就解决:
def fibs(num):
result=[0,1]
for i in range(num-2):
result.append(result[-2]+result[-1])
return result
网友评论