python学习之路-第六天-一个简单的脚本
现在有一个需求:把某个目录下的文件备份到指定到另外一个目录下,而且压缩后文件为zip文件
# -*- coding:utf-8 -*-
#! /usr/bin/python
# Filename:backup_v1.py
import os
import time
source = [r'H:\StudyLib\lib']
# 源文件目录,是个列表,可以放入多个目录
target_dir = 'I:\\backpacks\\'
# 目标目录
target = target_dir + time.strftime('%Y%m%d%H%M%S') + '.zip'
# 目标zip文件
zip_commend = "zip -qr %s %s" % (target, ' '.join(source))
# zip命令字符串
print zip_commend
#输出命令行测试
if os.system(zip_commend) == 0:
# 执行zip命令,若返回0,则说明正确备份
print 'Successful backup to ' ,target
else:
print 'backup failed'
上面的注释写的挺详细的了,我们需要注意的由两点:
一个是windows不会自带zip压缩程序,需要我们自己下载,并把环境变量配置正确,
另一个如果没有在头部声明编码的话会出现中文编码的问题,一定要写在第一行
这个版本其实只是把源文件和目标文件规定了一下,并没有任何优化操作
第一个优化:
可以在我们的目标目录中建立一级和二级目录,一级目录名称就为年月日,这样在每次做备份的时候,可以确保一天只建立一个文件夹(如果存在就不用创建新的文件夹了)
# -*- coding:utf-8 -*-
#! /usr/bin/python
# Filename:backup_v1.py
import os
import time
source = [r'H:\StudyLib\lib']
# 源文件目录,是个列表,可以放入多个目录
target_dir = 'I:\\backpacks\\'
# 目标目录
today = target_dir + time.strftime('%Y%m%d')
# 目标文件夹的一级目录
now = time.strftime('%H%M%S')
# 目标文件夹的二级目录
if not os.path.exists(today):
os.mkdir(today)
print 'Successful create directory',today
# 如果目录不存在则创建
target = today + os.sep + now + '.zip'
# 目标文件
zip_commend = "zip -qr %s %s" % (target, ' '.join(source))
# zip命令字符串
print "执行命令:" +zip_commend
#输出命令行测试
if os.system(zip_commend) == 0:
# 执行zip命令,若返回0,则说明正确备份
print 'Successful backup to ' ,target
else:
print 'backup failed'
最理想的创建这些归档的方法是分别使用zipfile和tarfile,因为是python标准库里面的方法,这次的学习里面的os.system方法就不推荐使用
python学习之路-第六天-一个简单的脚本的更多相关文章
- 【Python学习笔记三】一个简单的python爬虫
这里写爬虫用的requests插件 1.一般那3.x版本的python安装后都带有相应的安装文件,目录在python安装目录的Scripts中,如下: 2.将scripts的目录配置到环境变量pa ...
- python学习之路 第六天
1.正则表达式 re.match() 从头匹配: re.match("[0-9]","123abc789") 只匹配一个数字: re.match("[ ...
- python学习之路-day2-pyth基础2
一. 模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,第三方库存放位置:site-packages sys模块简介 导入模块 import sys 3 sys模 ...
- Python学习之路-Day2-Python基础3
Python学习之路第三天 学习内容: 1.文件操作 2.字符转编码操作 3.函数介绍 4.递归 5.函数式编程 1.文件操作 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个 ...
- Python学习之路-Day2-Python基础2
Python学习之路第二天 学习内容: 1.模块初识 2.pyc是什么 3.python数据类型 4.数据运算 5.bytes/str之别 6.列表 7.元组 8.字典 9.字符串常用操作 1.模块初 ...
- Python学习之路-Day1-Python基础
学习python的过程: 在茫茫的编程语言中我选择了python,因为感觉python很强大,能用到很多领域.我自己也学过一些编程语言,比如:C,java,php,html,css等.但是我感觉自己都 ...
- Python学习之路【第一篇】-Python简介和基础入门
1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是 ...
- springboot 学习之路 1(简单入门)
目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...
- python学习之路,2018.8.9
python学习之路,2018.8.9, 学习是一个长期坚持的过程,加油吧,少年!
随机推荐
- 用docker搭建测试环境--docker的基本操作
上一篇文章中最后执行了docker pull centos的指令,经过一段时间的等待,会从hub.docker.com上下载docker官方最新的centos的images,接下来熟悉一下docker ...
- android camera之nv21旋转
这周做的一个android的camera开发,需要获取到视频帧数据,并且需要是nv21格式的byte数组,并且视频帧的图像需要是正方向的.和android相机打过交道的都清楚,android的came ...
- MySQL Migration Toolkit启动报jre错误
正常启动的话,会报出“an error occurred during the initialization of the runtime system.Please make sure you ha ...
- GET 还是 POST?
GET 还是 POST? 与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用. 然而,在以下情况中,请使用 POST 请求: 无法使用缓存文件(更新服务器上的文件或数据库) 向服务器发 ...
- 2018 ACM-ICPC 北京赛区小结 @ Reconquista
Statistics TYPE: Onsite Contest NAME: 2018 - ICPC Regional - Asia EC - Beijing PLAT: Hihocoder TIME: ...
- 卡夫卡(kafka)
1.Kafka独特设计在什么地方?2.Kafka如何搭建及创建topic.发送消息.消费消息?3.如何书写Kafka程序?4.数据传输的事务定义有哪三种?5.Kafka判断一个节点是否活着有哪两个条件 ...
- python3----练习题(过滑块验证)
# 导入模块 from selenium import webdriver from selenium.webdriver import ActionChains from selenium.webd ...
- 关于sqlSessionTemplate
SqlSessionTemplate是MyBatis-Spring的核心.这个类负责管理MyBatis的SqlSession,调用MyBatis的SQL方法,翻译异常.SqlSessionTempla ...
- iOS 去掉navgationbar 底部线条
[[UINavigationBar appearance] setBarStyle:UIBarStyleBlackTranslucent]; [[UINavigationBar appearance] ...
- angularjs中的$destroy和$timeout
module.controller("TestController", function($scope, $timeout) { var onTimeout = function( ...