博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
11--Python 备份文件程序
阅读量:5261 次
发布时间:2019-06-14

本文共 2268 字,大约阅读时间需要 7 分钟。

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

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

我来贴上自己的代码:

 

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

 

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

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

 

os.sep 

注意 os.sep 变量的用法——这会根据你的操作系统给出目录分隔符,即在Linux、Unix下它是 '/' ,在

Windows下它是 '\\' ,而在Mac OS下它是 ':' 。使用 os.sep 而非直接使用字符,会使我们的程序具
有移植性,可以在上述这些系统下工作。

转载于:https://www.cnblogs.com/stephenmc/p/5955857.html

你可能感兴趣的文章
关于ExecuteNonQuery()返回值为-1
查看>>
Firefox修復QQ快速登錄
查看>>
PAT——1060. 爱丁顿数
查看>>
分布式技术追踪 2017年第二十期
查看>>
[转载] Kafka剖析(一):Kafka背景及架构介绍
查看>>
# Excel批量处理数据
查看>>
PNG类库
查看>>
Android MediaCodec的数据处理方式分析
查看>>
常见的数据结构
查看>>
Dict
查看>>
js事件---同一个事件实现全选与反选功能
查看>>
git添加公钥后报错sign_and_send_pubkey: signing failed: agent refused operation的解决办法
查看>>
Linux环境变量永久设置方法(zsh)
查看>>
MVC4.0 利用IActionFilter实现简单的后台操作日志功能
查看>>
脑袋卡在窗子里
查看>>
ruby 中文字符to_json后乱码(unicode)
查看>>
《大道至简》第六章读后感
查看>>
如何在linux下查看apache的请求进程
查看>>
阿里云服务器遇到文件莫名奇妙丢失的的诡异事情
查看>>
codeforce 597C-Subsequences(dp+树状数组)
查看>>