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 ...
随机推荐
- Unity3d—GUI能量条
1.打开Unity编辑器. 2.在脚本文件夹中添加C#脚本,我的是添加了skill_01这个脚本.(要自己设置文件夹,方便管理,不然文件添乱不方便管理) 3.注意,脚本的名字一旦确定就不要去改动,因为 ...
- 2019-11-29-WPF-客户端开发需要知道的触摸失效问题
原文:2019-11-29-WPF-客户端开发需要知道的触摸失效问题 title author date CreateTime categories WPF 客户端开发需要知道的触摸失效问题 lind ...
- 使用Fiddler抓取手机APP数据包--360WIFI
使用Fiddler抓取手机APP流量--360WIFI 操作步骤:1.打开Fiddler,Tools-Fiddler Options-Connections,勾选Allow remote comput ...
- 如何禁用/关闭vs2017自带的Git工具的?
对于用习惯了独立Git工具和命令行的人来说,看到Visual Studio自带的Git工具后,很是别扭,到处充满了不习惯,而且是不是还会出现电脑卡顿的现象(可能是我自身电脑配置一般的问题). 如何关闭 ...
- 用javascript写了一个模拟阅读小说的程序
<html> <meta http-equiv="content-type" content="text/html; charset=UTF-8&quo ...
- Java程序员的魔法杖-Arthas 3.1.2版本发布了
Arthas已经成为我日常运维.线上排查的必备之品,听说最近更新版本了,今天这篇文章看下又增加了什么新的能力. Arthas是Alibaba开源的Java诊断工具,深受开发者喜爱. Github:ht ...
- java List一次性添加多个元素
(1)使用addAll方法 ArrayListExample.java public class ArrayListExample { public static void main(String[] ...
- OPATCH在线补丁
如果补丁中有online目录就是在线补丁,不需要数据库停机,在线的又分集群和非集群,如下 查看readme可以得知在线补丁打法 $ cat README.txt Oracle Database 11g ...
- 类型转换 String——》Char OR Char ——》String
String转换为char 在Java中将String转换为char是非常简单的.1. 使用String.charAt(index)(返回值为char)可以得到String中某一指定位置的char.2 ...
- XGBoost 引入 - 提升树
认识提升树 这个boosting 跟 Adaboost 不同. Adaboost 是通过上一轮的误差率来动态给定一下轮样本不同的权重来学习不同的模型. 现在的方式, 更多是基于残差 的方式来训练. 一 ...