python-zip压缩学习笔记

最近在学python的简明教程,用python写一个简单的备份脚本,以下是教程中的要求

  1. 需要备份的文件与目录应在一份列表中予以指定。
  2. 备份必须存储在一个主备份目录中。
  3. 备份文件将打包压缩成 zip 文件。
  4. zip 压缩文件的文件名由当前日期与时间构成。
  5. 我们使用在任何 GNU/Linux 或 Unix 发行版中都会默认提供的标准 zip 命令进行打包。
  6. 在这里你需要了解到只要有命令行界面,你就可以使用任何需要用到的压缩或归档命
  7. 令。
    在命令行中允许额外的文件与目录传递到脚本中。我们可以从sys.argv 列表中获得这些名称,然后我们可以通过 list 类提供的 extend 方法把它们添加到我们的 source 列表中.

说明:
extend()方法追加序列内容到列表,sys.argv[]是用来获取命令行参数的,sys.argv[0]表示代码本身文件路径,所以参数从1开始,以下例子说明:
#!/usr/bin/python
#coding=utf-8
import os,sys
import time

#增加外部参数输入
externalList = sys.argv[1:]
print '输入参数路径为:', externalList
#定义源文件备份路径
sourceList = ['/Users/swa/notes']
#加入外部路径参数列表
sourceList.extend(externalList)
#打印加入后参数列表
print "Extended List:",sourceList
#目标备份目录
target_dir = '/Users/swa/backup'
#判断是否存在备份目录,不存在则新建
if not os.path.exists(target_dir):
os.mkdir(target_dir)
#将当前日期作为主备份目录下的子目录名称
today = target_dir + os.sep + time.strftime('%Y%m%d')
#将当前时间作为zip包的文件名
now = time.strftime('%H%M%S')
#添加一条用户注释
comment = rawinput('请输入你的备份注释:')
#检查是否有评论注入
if len(comment) == 0:
target = today + os.sep + now + '.zip'
else:
target = today + os.sep + now + '
' + comment.replace(' ','_') + '.zip'
#如果子目录不存在则创建一个
if not os.path.exists(today):
os.mkdir(today)
print('Successfully created directory',today)
zip_command = 'zip -vr {0} {1}'.format(target,sourceList[1])
print('Zip command is:')
print(zip_command)
print('Running:')
if os.system(zip_command) == 0:
print 'Successful backup to', target
else:
print('Backup FAILED')
运行结果:
[root@localhost python]#python backup_ver4.py /etc/yum.repos.d
输入参数路径为: ['/etc/yum.repos.d']
Extended List: ['/Users/swa/notes', '/etc/yum.repos.d']
请输入你的备份注释:weq
Zip command is:
zip -vr /Users/swa/backup/20171221/153111_weq.zip /etc/yum.repos.d
Running:
adding: etc/yum.repos.d/ (in=0) (out=0) (stored 0%)
adding: etc/yum.repos.d/rhel-source.repo.bak (in=529) (out=206) (deflated 61%)
adding: etc/yum.repos.d/packagekit-media.repo (in=114) (out=110) (deflated 4%)
adding: etc/yum.repos.d/iso.repo (in=171) (out=131) (deflated 23%)
total bytes=814, compressed=447 -> 45% savings
Successful backup to /Users/swa/backup/20171221/153111_weq.zip

后续:本来想通过列表循环遍历把源路径/Users/swa/notes的文件目录也备份压缩,结果后来由于自己技术能力有限,查阅很多也没有解决,只能待后续研究出来再做改动,本人初学者,写的不好的地方还挺见谅!

转载于:https://blog.51cto.com/xingdiango/2052951

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值