Uzun zaman önce istediğim klasörleri periyodik olarak zipleyip belirttiğim ftp adresine yükleyecek bir programcık yazmam gerekti. Doğal olarak Java veya c# ile yazacakken aklıma bir zamanlar bir gece biraz kurcalayıp daha sonra bir türlü aktif olarak kullanamadığım Python geldi. Bir klasörü zipleyip upload etmenin pythonla çok kolay olacağını düşündüm ve haklıydım da. Hemen gerekli araştırmayı yapıp aşağıdaki kod parçasını yazdım. Python uzmanı değilim, kodda hatalar olabilir ve geliştirilebilir. İhtiyaç duyanlara örnek olması açısından paylaşıyorum…
# -*- coding: utf-8 -*-
import zipfile
import glob, os
import ftplib
import sys
ziplenecekDosya=raw_input("Lütfen arşivlenecek klasör yolunu giriniz: ")
arsivDosyasi=raw_input("Lütfen arşiv dosyası yolunu giriniz: ")
#önce arşiv dosyasını oluşturup write modunda açıyoruz
try:
file=zipfile.ZipFile(arsivDosyasi, "w")
print "Arşiv oluşturuldu..."
except:
print "Arşiv dosyası açılırken hata oluştu!"
sys.exit()
#sonra da dosyaları arşive atıyoruz,
try:
dosyalar=[]
for name in glob.glob(ziplenecekDosya+"*"):
file.write(name,os.path.basename(name),zipfile.ZIP_DEFLATED)
dosyalar.append(os.path.basename(name))
print "Dosya eklendi: "+os.path.basename(name)
except:
print "Dosyalar arşiv dosyasına eklenirken hata oluştu!"
finally:
try:
file.close()
finally:
print "Bu kadar..."
s=ftplib.FTP("host", "user", "passwd")
f=open(arsivDosyasi,'rb')
s.cwd("public_html")
s.storbinary('STOR '+arsivDosyasi,f)
f.close()
s.quit()


