如何在Python中制作相同日期文件的Zip存档

时间:2019-04-19 14:30:39

标签: python zipfile

hi,我准备了满足以下条件的软件,但如果文件夹中文件太多(例如100,000个),程序将开始将所有文件放入一个文件夹中。 一定时间后的单个zip文件。

我正在使用python 3.7

  1. 约会日期超过2天。
  2. 文件将具有相同的日期。
  3. 仅扩展名为.log的文件。
  4. 文件日期到zip文件的名称。
import os
import datetime
import time
from zipfile import ZIP_DEFLATED, ZipFile
import zipfile
m = os.listdir()

bugun=datetime.datetime.today()
fark=datetime.timedelta(days=2)
dun=(bugun-fark).date()
print ( dun,"tarihinden eski dosyalar zipleniyor")
zaman=time.mktime(dun.timetuple()) #There'il be dates over 2 days old.

for i in m:
    if os.stat(i).st_mtime<zaman and i.endswith(".log"): #
        x = os.stat(i).st_mtime
        y = datetime.datetime.fromtimestamp(x).date()
        print(i,"Dosyası Sıkıştırılıyor")

        if not os.path.exists(str(y)+".zip"):
            try:
                import zlib
                mode = zipfile.ZIP_DEFLATED
            except:
                mode = zipfile.ZIP_STORED
            zip_dosyasi = (str(y)+".zip")
            zip = ZipFile(zip_dosyasi, 'w', mode)
            print (zip_dosyasi,"dosyası oluşturuldu")

        zip.write(i)
        print(i,"Dosyası" ,zip_dosyasi,"Zip Klasörüne Taşındı")
        os.remove(i)
time.sleep(0.1)


print("İşlem Tamamlandı")

1 个答案:

答案 0 :(得分:0)

将新的ZipFile分配给全局变量zip时,将失去与先前绑定到zip的对象的绑定。将其分配到函数中,以使用不同的局部变量进行zip的每个分配。

documentation for this library不能提供有关问题根源或我认为的解决方案的线索。

此外,如果您从未调用过import zlib,又为什么呢?另外,没有理由将import语句放入for循环内。使用Python导入文件后,该库的其他import语句将被忽略。