最近看了下《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. TreeSet与TreeMap的源码分析 JDK7

    TreeSet存储原则是:不可重复,有序的. public TreeSet() { this(new TreeMap<E,Object>()); } public TreeSet(Comp ...

  2. Java版经典兔子繁殖迭代问题——斐波那契(Fibonacci)数列

    /** * 题目: * 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子. * 假如兔子都不死,问经过month个月后,兔子的总数为多少对? */ public ...

  3. 无法启动T-SQL调试。未能连接到计算机"."。这是在主机名解析时通常出现的暂时错误……

    今天在按在SSMS中,按F11进行断点调试时,弹出错误:"无法启动T-SQL调试.未能连接到计算器".".这是在主机名解析时通常出现的暂时错误--", 如下图: ...

  4. Junit单元测试对线程测试没反应

    今天还想简单写写线程的东西,结果刚刚写完我就懵逼了. 结果啥都没有输出,而用主方法运行就可以输出.没办法,只有度年来寻求自己的答案了 结果各方面的了解,我算是有个了解了. 首先来看看代码 packag ...

  5. 阿里云 CentOS7.2 配置FTP+Node.js环境

    本人小白,写下这篇博客意在记录踩过的坑,大神请绕道~ 准备工作 安装自己喜欢的连接软件(一般是putty或者xshell),本人选择的是xshell,软件如图 : 通过软件中的ssh连接连接上已经购买 ...

  6. 常用ARM指令集及汇编_破解

    链接地址:http://pan.baidu.com/s/1hsNtxJm

  7. vim全局替换命令

    vim全局替换命令   语法为 :[addr]s/源字符串/目的字符串/[option]全局替换命令为::%s/源字符串/目的字符串/g [addr] 表示检索范围,省略时表示当前行.如:“1,20” ...

  8. ThreadLocal线程本地变量

    首先说明ThreadLocal存放的值是线程内共享的,线程间互斥的,主要用于线程内共享一些数据,避免通过参数来传递,这样处理后,能够优雅的解决一些实际问题,比如hibernate中的OpenSessi ...

  9. CodeForces 705C Thor

    开30W个vector将数字归类,每一类数字开一个指针P,记录已经阅读到哪一个了,还可以开一个优先队列维护这些指针P. #pragma comment(linker, "/STACK:102 ...

  10. L2-001. 紧急救援

    L2-001. 紧急救援 题目链接:https://www.patest.cn/contests/gplt/L2-001 Dijstra 本题是dijstra的拓展,在求最短路的同时,增加了不同的最短 ...