现在有一个需求:把某个目录下的文件备份到指定到另外一个目录下,而且压缩后文件为zip文件
# -*- coding:utf-8 -*-
#! /usr/bin/python
# Filename:backup_v1.py
import os
import time
source = [r'H:\StudyLib\lib']
# 源文件目录,是个列表,可以放入多个目录
target_dir = 'I:\\backpacks\\'
# 目标目录
target = target_dir + time.strftime('%Y%m%d%H%M%S') + '.zip'
# 目标zip文件
zip_commend = "zip -qr %s %s" % (target, ' '.join(source))
# zip命令字符串
print zip_commend
#输出命令行测试
if os.system(zip_commend) == 0:
# 执行zip命令,若返回0,则说明正确备份
print 'Successful backup to ' ,target
else:
print 'backup failed'
上面的注释写的挺详细的了,我们需要注意的由两点:
一个是windows不会自带zip压缩程序,需要我们自己下载,并把环境变量配置正确,
另一个如果没有在头部声明编码的话会出现中文编码的问题,一定要写在第一行
这个版本其实只是把源文件和目标文件规定了一下,并没有任何优化操作
第一个优化:
可以在我们的目标目录中建立一级和二级目录,一级目录名称就为年月日,这样在每次做备份的时候,可以确保一天只建立一个文件夹(如果存在就不用创建新的文件夹了)
# -*- coding:utf-8 -*-
#! /usr/bin/python
# Filename:backup_v1.py
import os
import time
source = [r'H:\StudyLib\lib']
# 源文件目录,是个列表,可以放入多个目录
target_dir = 'I:\\backpacks\\'
# 目标目录
today = target_dir + time.strftime('%Y%m%d')
# 目标文件夹的一级目录
now = time.strftime('%H%M%S')
# 目标文件夹的二级目录
if not os.path.exists(today):
os.mkdir(today)
print 'Successful create directory',today
# 如果目录不存在则创建
target = today + os.sep + now + '.zip'
# 目标文件
zip_commend = "zip -qr %s %s" % (target, ' '.join(source))
# zip命令字符串
print "执行命令:" +zip_commend
#输出命令行测试
if os.system(zip_commend) == 0:
# 执行zip命令,若返回0,则说明正确备份
print 'Successful backup to ' ,target
else:
print 'backup failed'