python-----自动解压并删除zip文件

如何自动解压并删除zip?

  • 如何解压  →  使用内置模块来实现(shutil.unpack_archive)
  • 如何删除zip  →  使用内置模块os来实现(os.remove)
  • 如何监测zip的出现  →  如何判断某文件是zip(s.split('.'[-1]) /  如何让函数每一秒都执行(while True)

以下代码素材自取:链接:https://pan.baidu.com/s/1t6i5W0jATSdze3sPAe4sNg  提取码:0npb 

import os
import shutil
import time

def scan_file():
    for f in os.listdir(): #由于这里是当前路径,所以需要把这个代码文件和你要处理的文件放到同一个文件夹里
        if f.endswith('.zip'):
            return f

def unzip_it(f):
    folder_name = f.split('.')[0]
    target_path = os.path.join('.',folder_name)
    os.makedirs(target_path)
    shutil.unpack_archive(f,target_path)

def delete(f):
    os.remove(f)
    time.sleep(2)

if __name__ == '__main__':
    while True:
        zip_file = scan_file()
        if zip_file:
            unzip_it(zip_file)
            delete(zip_file)
            time.sleep(3)

以下代码素材自取:链接:https://pan.baidu.com/s/1PM9vl6LWjevuzqBHoglBzw  提取码:j0g4

# 监测 image 文件夹,如果包含的文件大于等于 5 个,则将这些文件压缩到 archive1.zip 文件中,并删除这些文件。当再次监测到文件多于 5 个的时候,生成 archive2.zip 压缩包,以此类推。 

# coding:utf-8
from shutil import make_archive
import os
import time
# 指定需要监测的文件夹
image_path = './image'
# 指定压缩包存放的文件夹
output_path = './output'
# 记录生成了多少个压缩包
zip_count = 0
# 利用while True使程序持续运行
while True:
    files = os.listdir(image_path)
    # files变量中存储了路径下所有文件的文件名,len()函数可以获取list变量包含多少个元素
    # files_count即为路径下的文件数
    files_count = len(files)
    if files_count >= 5:
        zip_count = zip_count + 1
        # 指定压缩包的名称以及路径
        zip_name =  os.path.join(output_path, 'archive' + str(zip_count))
        # 压缩文件
        make_archive(zip_name, 'zip', image_path)
        # 删除压缩过的文件
        for f in files:
            os.remove(os.path.join(image_path, f))
    # 休眠1秒,达到每1秒监测一次的效果
    time.sleep(1)

 

posted @ 2019-01-23 15:27  小呆丶  阅读(3499)  评论(0编辑  收藏  举报