Connessione FTP con Python

Mattepuffo's logo
Connessione FTP con Python

Connessione FTP con Python

Python già include una libreria per la connessione a server FTP.

In giro per il web ho visto parecchie guide su comme connettersi a FTP e recuperare la lista dei file, ma tutte usano funzioni che sono ormai deprecate (come FTP.dir e FTP.nlst).

Noi vederemo un esempi usando invece la funzione consigliata FTP.mlsd!

Creiamo quindi una semplice classe che si connette al server FTP, cambia directory e recupera la lista dei files:

from ftplib import FTP

class FtpConnection(object):
    
    HOST = ''
    USERNAME = ''
    PASSWORD = ''
    ftp = ''
    
    def __init__(self):
        self.ftp = FTP(self.HOST)
        self.ftp.login(self.USERNAME, self.PASSWORD)
        self.ftp.cwd('Volume_1')
        
    def get_files(self):
        l = self.ftp.mlsd()
        for i in l:
            if i[1]['type'] == 'file':
                print(i[0])
        self.ftp.quit()

La funzione cwd ci permette di cambiare directory all'interno del server.

Sotto abbiamo la nostra funzione get_files che usa appunto mlsd per recuperare e stampare la lista dei file.

La funzione mlsd non è proprio intituitiva al primo impatto.

Qua potete seguire una guida per capire le varie funzionalità.

Comunque come vedete facciamo anche un test sul tipo, facendo in modo di non stampre le eventuali directory.

Ciao!


Condividi

1 Commenti

  • Lanfranco Schillaci

    Sto provando e riprovando ftplib ma non riesco a inviare un semplice file.txt il codice è il seguente: from ftplib import FTP ftp = FTP('ftp.aiazzone.altervista.org','aiazzone','******','encoding='utf-8') ftp.login() ftp.quit() Mi restuisce questo errore: Traceback (most recent call last): File "C:/Users/Acer/Desktop/python_cui/***o03.py", line 5, in <module> ftp = FTP('ftp.aiazzone.altervista.org',encoding='utf-8') File "C:\Program Files\lib\ftplib.py", line 119, in __init__ self.connect(host) File "C:\Program Files\lib\ftplib.py", line 160, in connect self.welcome = self.getresp() File "C:\Program Files\lib\ftplib.py", line 242, in getresp resp = self.getmultiline() File "C:\Program Files\lib\ftplib.py", line 228, in getmultiline line = self.getline() File "C:\Program Files\lib\ftplib.py", line 210, in getline line = self.file.readline(self.maxline + 1) File "C:\Program Files\lib\codecs.py", line 322, in decode (result, consumed) = self._buffer_decode(data, self.errors, final) UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe8 in position 104: invalid continuation byte Se puoi aiutami il sito è su altervista. Grazie

    13/02/2021

Commentami!