ftplib; FTP protoküle üzerinde bir istemci oluşturmamızı sağlayan çok kullanışlı standart bir Python modülüdür.
Kullanımı da oldukça basit. Öncelikle bu modül içinde bulunan FTP sınıfından bir örnek(instance) oluşturuyoruz. Sırayla FTP adresi, kullanıcı adı ve şifresi parametre olarak veriliyor.
import ftplib ftp = ftplib.FTP("erdoganb.com", "ftpKullanıcıAdı", "FTPŞifresi") # # # ftp.quit()
Oluşturduğumuz bu FTP örneği ile bütün işlemlerimizi yapıp sonra quit ile bağlantıyı sonlandırıyoruz.
Dosya İşlemleri
Bağlantımız ilk açıldığı anda uzak sunucunun ana dizininde işlem yapmaya uygun olacaktır. Bunu cwd metodu ile değiştirebiliriz. Yeni bir klasör açmak için de mkd metodunu kullanabiliriz. Az önceki örneğin devamı olarak;
# deneme adında bir klasör oluştur ftp.mkd("/deneme") # sonraki işlemleri bu klasör üzerinde yap ftp.cwd("/deneme") # aktif olan klasörü konsola yazar print(ftp.pwd()) # aktif klasör içindeki dosyaları listeler print(ftp.dir())
Dosya göndermek için iki biçim bulunuyor. Biri dosyamızı ikili bloklar halinde diğeri ise satır satır gönderim yapıyor. İki metot da ilk parametre olarak FTP komutunu ikinci parametre olarak dosyamızın open metodu ile oluşturulmuş bir dosya nesnesini alıyor. İkili gönderim seçeneğinde blokların büyüklüğünü girebileceğimiz bir üçüncü parametre de bulunuyor.
Yine önceki örneğin devamı olarak deneme klasörüne iki dosya gönderelim;
# uzak bilgisayarda aktarılacak dosyanın ismi txt_dosya = "deneme.txt" # yerel bilgisayarımızda dosyamızın adresi txt_dosya_yolu = "C:\deneme.txt" ftp.storlines("STOR " + txt_dosya, open(txt_dosya_yolu)) jpg_dosya = "resim.jpg" jpg_dosya_yolu = "C:\resim.jpg" # burada binary(ikili) modda okumak için "rb" parametresini verdik open metoduna # gönderim yaparken blok boyutlarını da 1024 olarak girdik ftp.storbinary("STOR " + jpg_dosya, open(jpg_dosya_yolu, "rb"), 1024)
Dosyalarımız aktarılmış olmalı. Yukarıda kullandığımız dir metodu ile kontrol edilebilir.
Dosya almak için ise;
# indirilecek dosyamızı yazacağımız bir nesne oluşturuyoruz yeni_dosya = open("C:\resim_yeni.jpg", "wb") ftp.retrbinary('RETR resim.jpg', yeni_dosya.write)
Ardışık olarak, bir döngü içinde olabilir, çok fazla istek gönderilecek ise uzak bilgisayara, bağlantı uzak bilgisayar tarafından kapatılabilir. Bunu çözmek için istekler arasına time modülünün bir fonksiyonu olan time.sleep(1) ile biraz zaman eklenebilir.
Bir cevap yazın