备份程序升级-跨平台

一、实验说明

1. 环境登录

无需密码自动登录,系统用户名shiyanlou

2. 环境介绍

本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到桌面上的程序:

  1. LX终端(LXTerminal): Linux命令行终端,打开后会进入Bash环境,可以使用Linux命令

  2. Firefox:浏览器,可以用在需要前端界面的课程里,只需要打开环境里写的HTML/JS页面即可

  3. GVim:非常好用的编辑器,最简单的用法可以参考课程Vim编辑器

3. 环境使用

使用GVim编辑器输入实验所需的代码及文件,使用LX终端(LXTerminal)运行所需命令进行操作。

实验报告可以在个人主页中查看,其中含有每次实验的截图及笔记,以及每次实验的有效学习时间(指的是在实验桌面内操作的时间,如果没有操作,系统会记录为发呆时间)。这些都是您学习的真实性证明。

4.环境搭建

实验楼虚拟机,自带了python2.0和python3.0版本,无需安装 该实验建议使用 python2.0 版本, 也就是默认版本

IDE选择及安装:

vim:自带编辑器,无需安装,只要你会,随你喜欢

IDLE:python的编译器,推荐新手使用
代码:sudo apt-get install idle

spyder:需要学习学习
代码:sudo apt-get install spyder

二、不智能和平台问题

1、上节,我们已经做到了在Linux下,备份我(shiyanlou)的主页下所有文件"/home/shiyanlou/"到"/var/back_dir/"目录下,却遗留了几个问题:

  1. “晕到死”的系统文件管理,用到的符号是“\”,Linux和Mac都是“/”,所以,在这里,这个程序只是在“实验楼”虚拟机上使用,如何给“晕到死”和Mac用?
  2. 备份的文件,已时间命名,如果我们一天疯狂蹂躏,那我是不是这个文件下太杂太乱,这个保存文件的格式太不智能了。能不能用每天一个文件夹,压缩文件名为时间来标识?

2、上面提到的问题,第一个很简单,os模板是强大的。第二个呢,也不难,就是创建压缩文件前,创建今天的日期文件夹,ok,思路没问题,现在带着你们来实现

三、思路实现并补全代码

1.先铺路

要备份的文件夹:source = ["/home/shiyanlou/Code/"]

保存备份信息的文件夹:target_dir = "/home/shiyanlou/Desktop/"

文件夹名(日期): today_dir = target_dir + time.strftime('%Y%m%d')

文件名(时间):time_dir = time.strftime('%H%M%S')

检查文件夹命令:os.path.exist(today_dir)

文件夹路径:touch = today_dir + os.sep + time_dir + '.zip'

创建压缩文件命令: command_touch = "zip -qr " + touch +' '+ ' '.join(source)

ok,基本信息以及完成了,接下来开始设计逻辑思路

2.逻辑思路选择判断

1、思路,当然首选 伪代码

if 今天日期文件夹存在:
    创建时间压缩文件
else:
    创建今日日期文件夹
    创建时间压缩文件

2、开始实现代码

#!/usr/bin/python
# -*- coding: utf-8 -*-
# Filename : back_Up.py

import os
import time
#基本变量
source = ["/home/shiyanlou/Code/"]
target_dir = "/home/shiyanlou/Desktop/"

today_dir = target_dir + time.strftime('%Y%m%d')
time_dir = time.strftime("%H%M%S")

touch = today_dir + os.sep + time_dir + '.zip'
command_touch = "zip -qr " + touch +' '+ ' '.join(source)

#逻辑思路判断
if os.path.exists(today_dir)==0:
    os.mkdir(today_dir)
if os.system(command_t)==0:
    print 'Success backup Up'
else:
    print 'Failed backup'

3.代码解析

1、这次用到了 模板os 里面的其他一点东西:

  • os.sep:根据系统的不同,os.sep也不同,在Linux和Mac下(也可以说是Unix和类Unix系统中),os.sep的值为'/',而在视窗(即“晕到死”)一系列的系统中,os.sep的值为'\'。
  • os.path.exits():exits()函数的功能就是检查该系统中,是否存在指定路径的文件或文件夹存在,没有返回False(False 等于 0),有则返回True(True 不等于 0)

2、在跨平台中,因为Linux和Mac用了几乎同样的文件管理系统,所以这个程序可以直接在Mac和Linux中运行,如果要在Windows下运行,则需要改变 source 和 target_dir 两个变量的值,改成Windows下的文件格式,就可以了

4.同样有局限性

1、我只能保存我这个文件里面写好的路径文件夹吗?

2、我不能同时保存多个重要文件夹吗?

3、我每次运行这个程序,我都要打开编辑器,然后运行吗?

4、黑乎乎的框框,难看不能有个界面吗?

........

请进入下节实验课程环节

版权声明:允许转载,转载请注明出处 —— 《基于 Python 的文件备份》: 备份程序升级-跨平台

扫码关注微信公众号
Copyright @2016-2017 | 赣ICP备16003025号