python 项目实战之备份文件夹并且压缩文件夹及下面的文件
#!/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 项目实战之备份文件夹并且压缩文件夹及下面的文件的更多相关文章
- 给缺少Python项目实战经验的人
我们在学习过程中最容易犯的一个错误就是:看的多动手的少,特别是对于一些项目的开发学习就更少了! 没有一个完整的项目开发过程,是不会对整个开发流程以及理论知识有牢固的认知的,对于怎样将所学的理论知识应用 ...
- Python项目实战:福布斯系列之数据采集
1 数据采集概述 开始一个数据分析项目,首先需要做的就是get到原始数据,获得原始数据的方法有多种途径.比如: 获取数据集(dataset)文件 使用爬虫采集数据 直接获得excel.csv及其他数据 ...
- Jenkins部署Python项目实战
一.背景 我们工作中常用Jenkins部署Java代码,因其灵活的插件特性,例如jdk,maven,ant等使得java项目编译后上线部署一气呵成,同样对于脚本语言类型如Python上线部署,利用Je ...
- 用RAR将多个文件夹一次性压缩为多个对应zip文件
选中要压缩的所有文件夹.右键,选“添加到压缩文件...”,弹出的菜单如下图: 点击菜单栏“文件”.在“把每个文件都单独压缩文件中”选中,才可以单独创建压缩.如下图
- 4.Python项目实战
这里会每个周更新一个Python的大练习,作为 实战项目... elk
- Python项目实战
编程只有不断练习才能掌握其精髓,多练练网上的习题和项目,才能掌握python的精髓. Python的模块和包是出了名的多,因此你不必自己从底层开始写起,只需要看懂模块和包的使用文档就可以了,因此掌握一 ...
- 【Python项目实战】Pandas:让你像写SQL一样做数据分析(一)
1. 引言 Pandas是一个开源的Python数据分析库.Pandas把结构化数据分为了三类: Series,1维序列,可视作为没有column名的.只有一个column的DataFrame: Da ...
- python项目实战-小游戏1
项目规则: 1.玩家和敌人分别从现有的角色中选择3个角色 2.随机生成目前的血量,和攻击量 3.游戏规则:当玩家向敌人发起攻击,敌人当前的血量=之前的血量-玩家的血量,同理 4.3局两胜 5.自定义玩 ...
- python 项目实战之Django 邮件发送
发送邮件¶ 虽然 Python 借助 smtplib 模块简化了发送邮件的流程,但是 Django 在其基础上提供了更简化的支持.这些封装意在加快邮件发送,方便在开发时测试发送邮件,在不支持 SMTP ...
随机推荐
- Codeforces Global Round 3
Codeforces Global Round 3 A. Another One Bites The Dust 有若干个a,有若干个b,有若干个ab.你现在要把这些串拼成一个串,使得任意两个相邻的位置 ...
- windows10下录屏
windows10自带了录屏功能.运行win+G即可打开.如果出现错误,可以运行如下PS脚本. https://files.cnblogs.com/files/mqingqing123/reinsta ...
- golang---常用函数
package main; import ( "os" "fmt" "time" "strings" ) //os包中的 ...
- windows通过秘钥使用ssh和scp
windows10内置支持了ssh和scp等仿linux指令,可以让我们方便的使用类似linux的工作流把日常的代码资源部署维护工作写成脚本(批处理). ssh和scp都有-i参数可以通过指定一个私钥 ...
- HighChat 动态绑定数据记录
最近刚开始做图形操作,纠结了一上午,highchat 动态绑定数据这块一直不知道怎么绑定,后来多次尝试,发现 1.x轴的数据是个数组格式,我从后台传到前台的时候,js中用数组进行处理数据,然后赋值到c ...
- python高级编程——网络编程(三)
TCP和并发服务器 与UDP不同的是,他是一个面向连接的,可靠的数据传输协议 TCP通信比较复杂 先写一个TCP服务器,一般步骤如下: 1.首先是要创建一个socket套接字:socket() 2.服 ...
- 很全的vue插件汇总,赶紧收藏下(转)
Vue是一个构建数据驱动的 web 界面的渐进式框架.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件特别整理了常用的vue插件,来了个大汇总,方便查找使用,便于工作 ...
- JavaScript中数组相关的属性方法
下面的这些方法会改变调用它们的对象自身的值: Array.prototype.copyWithin() 在数组内部,将一段元素序列拷贝到另一段元素序列上,覆盖原有的值. Array.prototype ...
- 【转载】Gradle学习 第六章:构建脚本基础
转载地址:http://ask.android-studio.org/?/article/11 6.1. Projects and tasks 项目和任务Everything in Gradle si ...
- Android源码分析(十二)-----Android源码中如何自定义TextView实现滚动效果
一:如何自定义TextView实现滚动效果 继承TextView基类 重写构造方法 修改isFocused()方法,获取焦点. /* * Copyright (C) 2015 The Android ...