最近看了下《A Byte of Python》, 看见一个非常有意思的程序,用python进行文件行备份的练习程序, 自己在机器上敲代码运行了一遍,结果出现了一个小问题,路径出错——“找不到压缩软件”,网上搜答案,发现很多人都用python实现了这个功能,而且都是原创,高兴之余,心里面很佩服他们。

不过仔细一看,却发现这些程序中,居然有很多跟《A Byte of Python》中的一模一样,有一些进步点,多一些print提示信息。实际运行起来都是各种问题。顿时感到有些无语,所谓原创,居然是这样子。我想这应该就是国内网络上的一个通病吧,所以有问题还是多去国外论坛交流交流甚好,比如说 stackoverfolow.

我来贴上自己的代码:

 import os
import time #1.需要备份的文件夹或者文件
source = ['D:\\backup']
#2.需要备份的存放目录
target_dir = 'D:\\work\\'
#3.要压缩的文件, windows 上通过winrar进行
target = target_dir +time.strftime('%Y%m%d%H%M%S') +'.7z'
#4.通过WinRAR进行压缩打包
zip_command = 'rar a %s %s' % (target, ''.join(source)) //使用join()方法来拼接字符串
#5.运行脚本进行备份
if os.system(zip_command) == 0:
print 'successful backuped ',target
else:
print "backup failed"

在这个程序中我遇到了最主要的问题就是windows 平台没有想linux自带的zip命令,所以我们需要安装解压缩软件设置环境变量后才可以正常运行上述的备份程序。

可以安装7zip或者winrar都可以,只需要更换命令行参数即可, 如果使用7zip 那么11行要更改为7z 如果是winrar 更改为rar。

记得添加完压缩软件环境变量后,关掉CMD 重新打开下cmd,至于为什么,说出来都是泪!

附上程序中使用的join()方法:

join()函数

语法:  'sep'.join(seq)

参数说明
sep:分隔符。可以为空‘’
seq:要连接的元素序列、字符串、元组、字典
上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串

返回值:返回一个以分隔符sep连接各个元素后生成的字符串

>>> seq = ['hello','good','boy']
>>> print ''.join(seq)
hellogoodboy
>>> print ' '.join(seq)
hello good boy
>>>

下面这个是一个完整的代码,可以根据自己修改的记录来自定义备份的文件夹

 #!C:\Python27
# -*- coding: utf-8 -*- import os
import time #1.需要备份的文件夹或者文件
source = ['D:\\backup']
#2.需要备份到的目录
target_dir = 'D:\\work\\'
#3.today 是以当前日期命令的目录
today = target_dir + time.strftime('%Y%m%d')
#4.当前时间是压缩文件名字
now = time.strftime('%H%M%S')
#5.判断用户输入的信息,如果输入了信息那么就添加到文件名上
comment = raw_input("enter a comment:")
if len(comment)==0:
target = today + os.sep+now+'.zip'
else:
target = today +os.sep +now +'_'+ comment.replace(' ','_')+'.zip' #6.判断是否存在对应的文件夹
if not os.path.exists(today):
os.mkdir(today)
print 'scuessfully created directory',today #7. 创建压缩脚本
zip_command = 'rar a %s %s' %(target, ''.join(source))
#8运行脚本
if os.system(zip_command)==0:
print 'scuessfully backup to ',target
else:
print 'backup failed'

os.sep

注意 os.sep 变量的用法——这会根据你的操作系统给出目录分隔符,即在Linux、Unix下它是 '/' ,在
Windows下它是 '\\' ,而在Mac OS下它是 ':' 。使用 os.sep 而非直接使用字符,会使我们的程序具
有移植性,可以在上述这些系统下工作。

11--Python 备份文件程序的更多相关文章

  1. 使用PyQt来编写第一个Python GUI程序

    原文:使用PyQt来编写第一个Python GUI程序 本文由 伯乐在线 - Lane 翻译,Daetalus 校稿.未经许可,禁止转载!英文出处:pythonforengineers.com.欢迎加 ...

  2. Python/Java程序员面试必备常用问题解析与答案

    转自AI算法联盟,理解python技术问题,以及一些常见的java面试中经常遇到的问题,这些面试问题分为四类: 是什么(what) 如何做(how) 说区别/谈优势(difference) 实践操作( ...

  3. 笨办法学python - 专业程序员的养成完整版PDF免费下载_百度云盘

    笨办法学python - 专业程序员的养成完整版PDF免费下载_百度云盘 提取码:xaln  怎样阅读本书 由于本书结构独特,你必须在学习时遵守几条规则 录入所有代码,禁止复制粘贴 一字不差地录入代码 ...

  4. 运行easy_install安装python相关程序时提示failed to create process

    运行easy_install安装python相关程序时提示failed to create process,因为安装了两个python,卸载了的那个目录没删除,删除了另外的python目录后这个问题就 ...

  5. Apache运行python cgi程序

    Apache运行python cgi程序 环境 win10 x64 专业版 Apache2.4 python 2.7 Apache安装和配置 Apache服务器的安装请自行搜索.在Apache2.4中 ...

  6. python 整型--《Python 3程序开发指南》笔记

    参考:<Python 3程序开发指南> 整数转换函数: bin(i) 返回整数i的二进制表示(字符串) hex(i) 返回i的十六进制表示(字符串) int(x) 将x转换为整数,失败产生 ...

  7. python爬虫程序

    http://blog.csdn.net/pleasecallmewhy/article/details/8922826 此人的博客关于python爬虫程序分析得很好!

  8. 将你的Python Web程序部署到Ubuntu服务器上

    在本文记录了我在Ubuntu中部署Flask Web站点的过程, 其中包括用户创建.代码获取.Python3环境的安装.虚拟环境设置.uWSGI启动程序设置,并将Nginx作为前端反向代理.希望对各位 ...

  9. 深入浅出web服务器与python应用程序之间的联系

    简单来说,Web服务器是在运行在物理服务器上的一个程序,它永久地等待客户端(主要是浏览器,比如Chrome,Firefox等)发送请求.Web 服务器接受 Http Request,返回 Respon ...

  10. 一个简单的python爬虫程序

    python|网络爬虫 概述 这是一个简单的python爬虫程序,仅用作技术学习与交流,主要是通过一个简单的实际案例来对网络爬虫有个基础的认识. 什么是网络爬虫 简单的讲,网络爬虫就是模拟人访问web ...

随机推荐

  1. kubernetes port nodePort targetPort 理解

    port The port that the service is exposed on the service's cluster ip (virsual ip). Port is the serv ...

  2. (repost)在ARM Linux内核中增加一个新的系统调用

    实验平台内核版本为4.0-rc1,增加一仅仅打印Hello World的syscall,最后我们在用户空间swi验证 实验平台内核版本为4.0-rc1,增加的系统调用仅仅是简单打印一个Hello Wo ...

  3. PHP编程----猴子选大王

    <?php/** * 猴子选大王 * 17个猴子围成一圈,从某个开始报数1-2-3-1-2-3---报"3"的猴子就被淘汰, * 游戏一直进行到圈内只剩一只猴子它就是猴大王了 ...

  4. css 样式那些事

    1.      input placeholder 的颜色修改 ::-moz-placeholder { color: #f3d999; } ::-webkit-input-placeholder { ...

  5. C#学习单向链表和接口 IList<T>

    C#学习单向链表和接口 IList<T> 作者:乌龙哈里 时间:2015-11-04 平台:Window7 64bit,Visual Studio Community 2015 参考: M ...

  6. Spring.net 学习IOC------准备

    在学习spring.net开始时,我们首先要下载spring.net所用到的类库: Common.Logging.dll(必要)Spring.Core.dll(必要)Spring.Data.dllSp ...

  7. jQuery(6)——jQuery对表单、表格的操作及更多应用

    jQuery对表单.表格的操作及更多应用 [表单应用] 一个表单有表单标签.表单域及表单按钮三个基本部分. 单行文本框应用:获取和失去焦点改变样式. 也可以用CSS中的伪类选择符来实现,但是IE6并不 ...

  8. SpringMVC之ModelAndView的简单使用

    可以使用ModelAndView来跳转页面和传值,具体用法如下: 构造方法的参数是要跳转的页面! 通过 ModelAndView 的对象的 AddObject(K,V)方法,可以传入数据! 获得mod ...

  9. Glide加载圆形图片

     方案1:经过验证,可以完美实现 Glide.with(context).load(url).asBitmap().centerCrop().into(new BitmapImageViewTarge ...

  10. JavaScript功能规划的基本语法总结

    1.迭代数组 1)map 方法会迭代数组中的每一个元素,并根据回调函数来处理每一个元素,最后返回一个新数组.注意,这个方法不会改变原始数组 //例子 var oldArray = [1,2,3,4,5 ...