PYTHON练习

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

我看过了网站给的标准答案,但是结果是当image中文件超过5个,将image中所有文件全部打包了,如果是这样,那后面的那句话“当再次监测到文件多于 5 个的时候”就没有任何作用,因为此时image文件夹中已经没有任何文件了。 所以我的理解是:如果image文件中超过5个,就将这前面的5个以archive1.zip的名字打包,然后再行检测,如果还是超过5个,再以archive2.zip的名字,一直循环下去,最后少于5个文件了,题中虽然没提,但是我也以archiven.zip的名字打包了。 所以,重新写了这个题目的答案。 我的文件以zip.py命名,将image和zip.py放在桌面上,运行zip.py后,image文件夹中有9个文件,最后分别得到archive1.zip和archive2.zip,archive1.zip中有5个文件,archive2.zip中有4个文件。 zip.py程序如下: 

import os
import shutil
from shutil import make_archive
import time

image_path = './image'
zip_count = 0

while True:
    files = os.listdir(image_path)
    files_count = len(files)
    zip_count += 1
    zip_name = './archive' + str(zip_count)

    if files_count >= 5:
        os.mkdir('archive' + str(zip_count))
        cur_file = files[:5]
        for f in cur_file:
            shutil.move(image_path+'/'+f,'./'+zip_name)
        make_archive(zip_name,'zip',zip_name)
        shutil.rmtree(zip_name)
    elif 0<files_count<5:
        os.mkdir('archive' + str(zip_count))
        for f in files:
            shutil.move(image_path + '/' + f, './' + zip_name)
        make_archive(zip_name, 'zip', zip_name)
        shutil.rmtree(zip_name)
    else:
        break

    time.sleep(1)


评论留言
    暂无评论
发表评论