目录
二、任务:实时监测一个文件夹,如果包含的文件大于5个,压缩到一个文件夹中,并删除这些文件
一、自动解压压缩包,删除解压后的压缩包
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# scan、unzip、delete zip、detect
# 在运行时新建一个文件还是会出错 复制过来的是没问题的
import os
import shutil
import time
path = "D:/XXXXX/" #路径 拼接的时候注意/
def scan_file():
files = os.listdir(path)
for f in files:
if f.endswith('.zip'):
return f
def unzip_it(f):
folder_name = f.split('.')[0]
target_path = path + folder_name
os.makedirs(target_path)
shutil.unpack_archive(path+f, target_path) #文件要加上路径
def delete(f):
os.remove(path+f) #这里也是,删除文件需要路径
while True:
#持续观察有没有文件,但是大部分时间是没有压缩文件的
#可能会返回None 或者报错什么的,所以加一个判断
zip_file = scan_file()
print(zip_file)
if zip_file:
unzip_it(zip_file)
delete(zip_file)
time.sleep(3) #每3s尝试一次
二、任务:实时监测一个文件夹,如果包含的文件大于5个,压缩到一个文件夹中,并删除这些文件
当再次检测到文件多于5个时,生成第二个压缩包 命名archive+压缩包次序
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Autor:tangzicheng
# 任务:检测一个文件夹,如果包含的文件大于5个,压缩到一个文件夹中,并删除这些文件
# 当再次检测到文件多于5个时,生成第二个压缩包
# 命名archive+压缩包次序
from shutil import make_archive
import os
import time
file_path = "G:/寒假资源/书/pdf"
output_path = "G:/寒假资源/书/test" #不能和文件在一个文件夹,否则下次压缩会把压缩包一起压缩
zip_count = 0 #计算压缩包的数目(可以用来取名
while True:
files = os.listdir(file_path)
files_count = len(files) #计算文件数目
if files_count >= 5:
zip_count = zip_count + 1
# 指定压缩包的名称以及路径
zip_name = output_path + '/' + 'archive' + str(zip_count)
# 压缩文件
make_archive(zip_name,'zip', file_path)
# 删除压缩过的文件
for f in files:
os.remove(file_path+'/'+f)
# 休眠1s,达到每1秒检测一次的效果
time.sleep(1)
print(1)