#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2019/11/12 14:21
# @Author : zoulixiang
# @Site :
# @File : Rsync_day_tom.py
# @Software: PyCharm
import os
import shutil
import datetime
import zipfile name = os.getcwd()
Dir = os.listdir(name) date_yester = (datetime.datetime.now() + datetime.timedelta(days=-1)).strftime("%Y") date_yesterday = (datetime.datetime.now() + datetime.timedelta(days=-1)).strftime("%Y%m%d") date_yesterday_seven = (datetime.datetime.now() + datetime.timedelta(days=-7)).strftime("%Y%m%d") def zip_ya(start_dir):
for dir_path, dir_names, file_names in os.walk(start_dir):
f_path = dir_path.replace(start_dir, '') # 这一句很重要,不replace的话,就从根目录开始复制
# print(f_path)
f_path = f_path and f_path + os.sep or '' # 实现当前文件夹以及包含的所有文件的压
for filename in file_names:
mailtime = os.path.getmtime(os.path.join(dir_path, filename)) # 查找当前文件所有时间
mailtdate = datetime.datetime.fromtimestamp(mailtime).strftime('%Y%m%d') # 格式化转化
new_dirs = date_yesterday + '/' + start_dir
if mailtdate == date_yesterday: # 判断昨天的时间
"""
判断当前的文件--昨天的日期,移动放到指定的位置(新建一个昨天的目录)
"""
if not os.path.exists(new_dirs):
os.makedirs(new_dirs)
if os.path.join(new_dirs, filename):
print("已经移动至目标目录",)
else:
shutil.move(os.path.join(dir_path, filename), new_dirs) def zipDir(dirpath):
'''
:param dirpath: 目标文件夹路径
:return: 无
'''
z_file = dirpath + date_yesterday + '.zip'
zip = zipfile.ZipFile(z_file, 'w', zipfile.ZIP_DEFLATED,allowZip64=True)
for path, dirnames, filenames in os.walk(dirpath):
# 去掉目标和路径,只对目标文件夹下边的文件及文件夹进行压缩(包括父文件夹本身)
this_path = os.path.abspath('.')
fpath = path.replace(this_path, '')
for filename in filenames:
zip.write(os.path.join(path, filename), os.path.join(fpath, filename)) if os.path.isdir(path):
print("删除成功", path)
shutil.rmtree(path)
zip.close()
return z_file def rm_path(Dir):
#print(rmpaths)
for j in Dir:
if j.strip().startswith(date_yester):
print(j)
"""
如果大于七天,则删除
"""
if j < date_yesterday_seven:
print("sss",j)
shutil.rmtree(os.path.join(j)) if __name__ == '__main__': dirs = []
for i in Dir:
if not i.strip().startswith("Rs"):
if not i.strip().startswith(date_yester):
dirs.append(i)
#移动文件到指定的目录
for i in dirs:
zip_ya(i) #压缩昨天的文件到指定的目录
#windowns
paths = "D:\\MATRIX_NETWORK\\test\\%s" % date_yesterday
#linux
#paths = "/home/log/%s" % date_yesterday
path_list = os.listdir(paths)
for i in path_list:
print(i)
zipDir(os.path.join(paths, i)) #删除7天前的目录
rm_path(Dir)

效果展示

python 项目实战之备份文件夹并且压缩文件夹及下面的文件的更多相关文章

  1. 给缺少Python项目实战经验的人

    我们在学习过程中最容易犯的一个错误就是:看的多动手的少,特别是对于一些项目的开发学习就更少了! 没有一个完整的项目开发过程,是不会对整个开发流程以及理论知识有牢固的认知的,对于怎样将所学的理论知识应用 ...

  2. Python项目实战:福布斯系列之数据采集

    1 数据采集概述 开始一个数据分析项目,首先需要做的就是get到原始数据,获得原始数据的方法有多种途径.比如: 获取数据集(dataset)文件 使用爬虫采集数据 直接获得excel.csv及其他数据 ...

  3. Jenkins部署Python项目实战

    一.背景 我们工作中常用Jenkins部署Java代码,因其灵活的插件特性,例如jdk,maven,ant等使得java项目编译后上线部署一气呵成,同样对于脚本语言类型如Python上线部署,利用Je ...

  4. 用RAR将多个文件夹一次性压缩为多个对应zip文件

    选中要压缩的所有文件夹.右键,选“添加到压缩文件...”,弹出的菜单如下图: 点击菜单栏“文件”.在“把每个文件都单独压缩文件中”选中,才可以单独创建压缩.如下图

  5. 4.Python项目实战

    这里会每个周更新一个Python的大练习,作为 实战项目... elk

  6. Python项目实战

    编程只有不断练习才能掌握其精髓,多练练网上的习题和项目,才能掌握python的精髓. Python的模块和包是出了名的多,因此你不必自己从底层开始写起,只需要看懂模块和包的使用文档就可以了,因此掌握一 ...

  7. 【Python项目实战】Pandas:让你像写SQL一样做数据分析(一)

    1. 引言 Pandas是一个开源的Python数据分析库.Pandas把结构化数据分为了三类: Series,1维序列,可视作为没有column名的.只有一个column的DataFrame: Da ...

  8. python项目实战-小游戏1

    项目规则: 1.玩家和敌人分别从现有的角色中选择3个角色 2.随机生成目前的血量,和攻击量 3.游戏规则:当玩家向敌人发起攻击,敌人当前的血量=之前的血量-玩家的血量,同理 4.3局两胜 5.自定义玩 ...

  9. python 项目实战之Django 邮件发送

    发送邮件¶ 虽然 Python 借助 smtplib 模块简化了发送邮件的流程,但是 Django 在其基础上提供了更简化的支持.这些封装意在加快邮件发送,方便在开发时测试发送邮件,在不支持 SMTP ...

随机推荐

  1. 使用python远程连接数据库

    根据web连接服务的原理,我们可以通过一台电脑连接我们另一台电脑上的数据库 一.开启数据库的权限1.Mysql:1)修改访问权限首先修改可以访问的ip,把‘localhost’全部修改为‘%’,打开c ...

  2. 2019-11-29-浅谈-Windows-桌面端触摸架构演进

    原文:2019-11-29-浅谈-Windows-桌面端触摸架构演进 title author date CreateTime categories 浅谈 Windows 桌面端触摸架构演进 lind ...

  3. Redis配置过程中的问题

    记录一下配置过程中的坑~~ 当Redis在服务器上安装完成后,get.set没有问题了,接下来在程序中使用看看... 首先 在配置文件redis.conf中,默认的bind 接口是127.0.0.1, ...

  4. Asp.net MVC企业级开发(01)---Autofac

    1.1 控制反转 在面向对象设计的软件系统中,它的底层都是由N个对象构成的,各个对象之间通过相互合作,最终实现系统的业务逻辑.同时,对象之间的耦合关系是无法避免的,也是必要的,这是协同工作的基础.但是 ...

  5. 玩透二叉树(Binary-Tree)及前序(先序)、中序、后序【递归和非递归】遍历

    基础预热: 结点的度(Degree):结点的子树个数:树的度:树的所有结点中最大的度数:叶结点(Leaf):度为0的结点:父结点(Parent):有子树的结点是其子树的根节点的父结点:子结点/孩子结点 ...

  6. Python - 基本数据类型 - 第二天

    Python3 基本数据类型 Python 中的变量不需要声明.每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 在 Python 中,变量就是变量,它没有类型,我们所说的"类型& ...

  7. 初学者学习golang可能遇到的坑

    我也是个golang初学者,刚入门的话,有些"坑"还是不好发现的.如map只是定义了然后就拿来使用,变量的值覆盖等. 本来打算写一篇的,后面发现有人写的挺不错的,我就把里面的有些坑 ...

  8. 离散数学交并补运算、差运算、异或运算的实现--biaobiao88

    对集合的交并补运算.差运算及异或运算的代码,可输入字符与数字,内容简单,详情请看以下代码 #include<iostream> using namespace std; int main( ...

  9. 2019-09-09 memcache

    什么是缓存呢???缓存就是存贮数据(使用频繁的数据)的临时地方缓存可以认为是数据的大池子 一.数据缓存这里所说的数据缓存是指数据库查询缓存,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不 ...

  10. 【软件工程第二次作业】个人项目:WordCountPy

    一.GitHub 地址 项目 GitHub 地址为:https://github.com/bytemo/WordCountTool 二.PSP表格 PSP2.1 Personal Software P ...