Как сделать Zip-архив файлов с одинаковыми датами в Python - PullRequest
1 голос
/ 19 апреля 2019

привет, я подготовил программное обеспечение, которое удовлетворяет следующим условиям, но если в папке слишком много файлов (например, 100 000), программа начинает перебрасывать все файлы в один почтовый файл через определенный промежуток времени.

Я использую 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 голосов
/ 19 апреля 2019

при назначении новой ZipFile глобальной переменной zip вы теряете привязку к объекту, ранее привязанному к zip. Поместите это назначение внутри функции, чтобы каждое назначение zip использовало другую локальную переменную.

Документация для этой библиотеки не дает подсказки относительно источника вашей проблемы или решения, которое я думаю.

Кроме того, зачем import zlib, если вы никогда не звоните? Отдельно нет причин помещать оператор import в цикл for. После импорта файла в Python дополнительные операторы импорта для той же библиотеки игнорируются.

...