Python - FTP

FTPveya Dosya Aktarım Protokolü, bir ağdaki bilgisayarlar arasında dosya aktarmak için kullanılan iyi bilinen bir ağ protokolüdür. İstemci sunucu mimarisinde oluşturulur ve kullanıcı kimlik doğrulaması ile birlikte kullanılabilir. Kimlik doğrulaması olmadan da kullanılabilir, ancak bu daha az güvenli olacaktır. Geçerli bir çalışma dizinini ve diğer bayrakları tutan FTP bağlantısı ve her aktarım, verilerin aktarıldığı ikincil bir bağlantı gerektirir. En yaygın web tarayıcıları, FTP sunucularında barındırılan dosyaları alabilir.

FTP sınıfındaki Yöntemler

Python'da modülü kullanıyoruz ftplib Dosyaları aktarırken dosyaları listelemek için aşağıdaki gerekli yöntemlere sahip olan.

Yöntem Açıklama
pwd () Mevcut çalışma dizini.
cwd () Mevcut çalışma dizinini yol olarak değiştirin.
dir ([yol [, ... [, cb]]) Yolun dizin listesini görüntüler. İsteğe bağlı geri arama cb'si geri çekilmelere () geçildi.
storlines (cmd, f) Metin dosyasını, verilen FTP cmd'sini kullanarak yükler - örneğin, STOR dosya adı.
hikaye (cmd, f [, bs = 8192]) Storlines () ile benzerdir ancak ikili dosyalar için kullanılır.
sil (yol) Yolda bulunan uzak dosyayı siler.
mkd (dizin) Uzak dizin oluşturur.
istisna ftplib.error_temp Geçici bir hatayı belirten bir hata kodu (400–499 aralığında yanıt kodları) alındığında istisna ortaya çıktı.
istisna ftplib.error_perm Kalıcı bir hatayı belirten bir hata kodu (500–599 aralığında yanıt kodları) alındığında istisna ortaya çıktı.
bağlan (ana bilgisayar [, bağlantı noktası [, zaman aşımı]]) Verilen ana bilgisayara ve bağlantı noktasına bağlanır. FTP protokolü tarafından belirtildiği gibi varsayılan bağlantı noktası numarası 21'dir.
çık () Bağlantıyı kapatır ve çıkar.

Aşağıda, yukarıdaki yöntemlerden bazılarının örnekleri verilmiştir.

Dosyaları Listeleme

Aşağıdaki örnek, ftp sunucusunda anonim oturum açma kullanır ve geçerli dizinin içeriğini listeler. Dosyaların ve dizinlerin adlarını kullanır ve bunları bir liste olarak saklar. Ardından bunları yazdırır.

import ftplib
 
ftp = ftplib.FTP("ftp.nluug.nl")
ftp.login("anonymous", "ftplib-example-1")
 
data = []
 
ftp.dir(data.append)
 
ftp.quit()
 
for line in data:
    print "-", line

Yukarıdaki programı çalıştırdığımızda aşağıdaki çıktıyı alıyoruz -

- lrwxrwxrwx    1 0        0               1 Nov 13  2012 ftp -> .
- lrwxrwxrwx    1 0        0               3 Nov 13  2012 mirror -> pub
- drwxr-xr-x   23 0        0            4096 Nov 27  2017 pub
- drwxr-sr-x   88 0        450          4096 May 04 19:30 site
- drwxr-xr-x    9 0        0            4096 Jan 23  2014 vol

Dizini Değiştirme

Aşağıdaki program, dizini değiştirmek ve ardından gerekli içeriği almak için ftplib modülünde bulunan cwd yöntemini kullanır.

import ftplib
 
ftp = ftplib.FTP("ftp.nluug.nl")
ftp.login("anonymous", "ftplib-example-1")
 
data = []
 
ftp.cwd('/pub/')          change directory to /pub/
ftp.dir(data.append)
 
ftp.quit()
 
for line in data:
    print "-", line

Yukarıdaki programı çalıştırdığımızda aşağıdaki çıktıyı alıyoruz -

- lrwxrwxrwx    1 504      450            14 Nov 02  2007 FreeBSD -> os/BSD/FreeBSD
- lrwxrwxrwx    1 504      450            20 Nov 02  2007 ImageMagick -> graphics/ImageMagick
- lrwxrwxrwx    1 504      450            13 Nov 02  2007 NetBSD -> os/BSD/NetBSD
- lrwxrwxrwx    1 504      450            14 Nov 02  2007 OpenBSD -> os/BSD/OpenBSD
- -rw-rw-r--    1 504      450           932 Jan 04  2015 README.nluug
- -rw-r--r--    1 504      450          2023 May 03  2005 WhereToFindWhat.txt
- drwxr-sr-x    2 0        450          4096 Jan 26  2008 av
- drwxrwsr-x    2 0        450          4096 Aug 12  2004 comp

Dosyaları Getirme

Yukarıda gösterildiği gibi dosyaların listesini aldıktan sonra, belirli bir dosyayı kullanarak getfileyöntem. Bu yöntem dosyanın bir kopyasını uzaktaki sistemden ftp bağlantısının başlatıldığı yerel sisteme taşır.

import ftplib
import sys
 
def getFile(ftp, filename):
    try:
        ftp.retrbinary("RETR " + filename ,open(filename, 'wb').write)
    except:
        print "Error"
 
 
ftp = ftplib.FTP("ftp.nluug.nl")
ftp.login("anonymous", "ftplib-example-1")
 
ftp.cwd('/pub/')          change directory to /pub/
getFile(ftp,'README.nluug')
 
ftp.quit()

Yukarıdaki programı çalıştırdığımızda, README.nlug dosyasının bağlantının başlatıldığı yerel sistemde mevcut olduğunu buluyoruz.