#!/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. http内网转发

    package main import ( "io" "log" "net/http" "strings" ) func ...

  2. Notes:Unit Testing

    UnitTesting shanzm 右键-->在新标签页中打开图片,即可查看原图,图片超乎你想像的大!

  3. HTML5新标签和CSS伪类

    HTML5提供了很多新的标签,由于HTML5的兼容性比较差,HTML5的标签常用于手机端 <nav> <footer> <section> <header&g ...

  4. SoapException: Timed out while processing web services request

    情形:动态调用WebService时,语句method.Invoke异常. 异常信息为调用目标发生异常,从异常信息并不能看出问题所在,需要查看InnerException,如标题所述:处理web请求超 ...

  5. VUE面刷新

    1.这种方法页面会一瞬间的白屏 ) 2.这种也是一样,画面一闪 location.reload() 3.搭配provide.inject使用 首先在主页面 app.vue 设置: <keep-a ...

  6. 解决Hangfire 导致服务器内存飙涨

    最近因为项目需要调度作业服务,之前看张队推荐过一篇https://www.cnblogs.com/yudongdong/p/10942028.html 故直接拿过来实操,发现很好用,简单.方便  执行 ...

  7. Delphi - Delphi7 调用阿里大于实现短信消息验证

    阿里大于是阿里通信旗下产品,融合了三大运营商的通信能力,提供包括短信.语音.流量直充.私密专线.店铺手机号等个性化服务.每条四分五,价钱还算公道,经老农测试,响应速度非常快,基本上是秒到.官方文档提供 ...

  8. 前端通过js获取微信公众号用户的唯一标识符openId

    微信公众号程序开发的时候,获取用户信息的时候,需要用到用户的openId,openId是微信用户的唯一标识符,这个操作可以后台实现也可以前端实现,之前项目里是通过后台来获取的,好像用到了一些三方的包, ...

  9. vi/vim的快捷操作(2)

    1.拷贝当前行[yy],拷贝当前行向下的5行[5yy],并粘贴[p] 2.删除当前行[dd],删除当前行向下的5行[5dd] 3.在文件中查找某个单词,命令行模式下输入[/关键字],回车查找,输入[n ...

  10. i春秋——“百度杯”CTF比赛 十月场——Login

    根据页面源码提示的 test1 test1 登录 刷新此页面并抓包,有个show=0值得关注 在发送的包的header中加一句show:1,即可得到member.php的源码 <?php inc ...