最近看了下《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. <密码的实现>输入密码的时候,显示“*”,而不是显示输入内容

    一开始还以为用C语言和C++不能实现输入密码的时候显示出“*”而不显示输入的内容呢!没想到偶然的机会试出了用while循环结构可以实现.以下是我整理的C语言和C++的代码,供初学者参考. 这是C语言实 ...

  2. 在spring拦截器中response输出html标签到页面

    @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object ...

  3. APP金融安全白皮书十大安全注意事项及各项注意安全

    1 信息数据明文发送 2 通信数据可破解 3 敏感数据本地可破解 4 调试信息泄漏 5 敏感信息泄漏 6 密码学误用 7 功能泄漏 8 可二次打包 9 可调式 10 代码可逆向 ----------- ...

  4. ueditor1.4.3 在IE8下的 BUG

    ueditor1.4.3  .net 版 在IE8 下,多图片上传完成后,点击确认时报错,无法插入图片到编辑器中 原因是 ueditor.all.js 中的 24835 行 if (whitList[ ...

  5. JAVA17.1.12流程学习,潜心学习,少说多做,脚踏实地,一心一意。

  6. js 仿 asp中的 asc 和 chr 函数的代码

    <script type="text/javascript">var str;var asc; str = "A";document.write(s ...

  7. java中异常处理机制的简单原理

    以上是自认为的java异常处理的简单原理,如有不妥之处还请各位大神帮忙指点,谢谢!

  8. Xcode-之CocoaPads

    一.说明 CocoaPods是OS X和iOS下的一个第三类库管理工具,通过CocoaPods工具我们可以为项目添加被称为“Pods”的依赖库(这些类库必须是CocoaPods本身所支持的),并且可以 ...

  9. Okhttp设置http缓存,在没有网络的情况下加载http缓存里面的内容

    HTTP_CACHE_FILENAME为缓存地址根路径: private final String HTTP_CACHE_FILENAME = "HttpCache"; priva ...

  10. js实例--js滚动条缓慢滚动到顶部

    收集篇(已测)-- <html><head> <script type="text/javascript"> var currentPositi ...