#!/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. IIS8.5中的强制https直接修改web.config文件和顶级域名跳转www和过滤子目录不强制跳转

    亲测可用 <?xml version="1.0" encoding="UTF-8"?> <configuration> <syst ...

  2. PyTorch 之 DataLoader

    DataLoader DataLoader 是 PyTorch 中读取数据的一个重要接口,该接口定义在 dataloader.py 文件中,该接口的目的: 将自定义的 Dataset 根据 batch ...

  3. .net core 加载项目提示项目文件不完整,dotnet提示不是内部或外部命令

    记录一下 在系统环境变量中PATH添加如下: C:\Windows;C:\Windows\System32\System32\Wbem;C:\Windows\System32;

  4. Mybatis源码解析(一) —— mybatis与Spring是如何整合的?

    Mybatis源码解析(一) -- mybatis与Spring是如何整合的?   从大学开始接触mybatis到现在差不多快3年了吧,最近寻思着使用3年了,我却还不清楚其内部实现细节,比如: 它是如 ...

  5. 如何设计提高服务API的安全性(一)基础介绍

    场景 现今越来越多公司提供了Sass平台服务,大部分也直接提供API.如快递鸟.微信Api.云服务.如何保证这些服务的安全性是一门重要的课题.如快递跟踪.机票查询等很便捷地影响着我们d的生活,对这些技 ...

  6. 【转载】c# datatable 判断值是否存在

    在C#的数据表格DataTable操作过程中,有时候在操作DataTable前需要判断DataTable中的值是否存在,此时首选需要判断DataTable是否为null值,而后在判断DataTable ...

  7. EF自动创建数据库步骤之三(自定义数据库初始器)

    EF自动创建数据库需要我们告诉数据库如何进行初始化:如创建表后是否需要插入一些基础数据,是否 需要创建存储过程.触发器等.还有就是EF有三种初始化方式(参见下面三个类): DropCreateData ...

  8. 英语chrysopal金绿宝石chrysopal单词

    chrysopal金绿宝石,也称金绿玉.化学成分为BeAl2O4.晶体属正交(斜方)晶系的氧化物矿物.它位列名贵宝石,具有四个变种:猫眼,变石,变石猫眼和金绿宝石晶体. 金绿宝石本身就是较稀少的矿物, ...

  9. Jira未授权SSRF漏洞复现(CVE-2019-8451)

    0x00 漏洞背景 Jira的/plugins/servlet/gadgets/makeRequest资源存在SSRF漏洞,原因在于JiraWhitelist这个类的逻辑缺陷,成功利用此漏洞的远程攻击 ...

  10. android 第三方开源库 学习汇总

    依赖注入框架ButterKnife  https://github.com/JakeWharton/butterknife  学习过程     专注于android的View注入框架,并不支持其他方面 ...