Lucrul cu FTP din Python

Cuprins
Piton Este un limbaj care ne permite să încorporăm munca cu diferitele funcționalități ale sistemelor de operare într-un mod ușor și intuitiv, datorită numărului mare de biblioteci și documentație care există pe net gratuit și bine explicat.
Unul dintre cele mai puternice puncte ale acestui limbaj este lucrul cu protocoale de rețea, printre care putem menționa FTP și ceva mai obișnuit, cum ar fi e-mailul, cu acest lucru putem dezvolta programe sau aplicații care ne permit să încărcăm fișiere pe computere la distanță într-un mod automat, dacă dorim, totul fără a fi nevoie să recurgem la alte instrumente din afara ecosistemului Piton.
Protocolul FTP ne permite să efectuăm transferuri de fișiere printr-o conexiune într-o rețea. În mod normal, este protocolul pe care îl folosim pentru a ne conecta de la distanță la servere și pentru a manipula astfel fișierele, de obicei portul 21Cu toate acestea, acest lucru este complet pe gustul consumatorului, așa că, dacă vedem un alt port, nu este surprinzător că este o instalare personalizată.
Pentru a interacționa cu acest protocol avem nevoie de două lucruri, primul este un server care este în aer și disponibil pentru rețeaua noastră, poate fi pe aceeași rețea sau poate pe internet. Al doilea lucru care este necesar este un client care poate trimite și primi informații de la serverul menționat, acest client trebuie să aibă capacitatea de a utiliza porturile specificate de serviciu și autentificarea stabilită.
Faceți un client în Piton că pot face conexiune FTP De la zero este posibil, cu toate acestea efortul pe care l-ar lua ar fi considerabil și în cele din urmă poate fi în zadar dacă nu avem nevoie de ceva special.
Pentru a evita neplăcerile și dezvoltarea inutilă Piton ne oferă o bibliotecă care deja ne ajută cu o mare parte a muncii. Vorbim despre ftplib, conține metode complete și deja testate și rafinate care facilitează comunicarea utilizând protocolul de transfer de fișiere FTP.
Cum se folosește biblioteca?Pentru a utiliza această bibliotecă trebuie pur și simplu să o includem în programul nostru folosind instrucțiunile import și apoi începem dezvoltarea noastră normală. În exemplul următor vom realiza un mic program client care se poate conecta la un server FTP, în acest caz vom folosi serviciul kernel.org care este un site web Linux și cu acesta vom lista fișierele disponibile.
Alegem acest server deoarece nu are nevoie de autentificare și ne permite să folosim modul anonim. Să vedem apoi codul și apoi vom face explicația corespunzătoare, singura cerință de care avem nevoie este să avem Python 2.7 și conexiune la internet:
 #! / usr / bin / env python PATH_FTP_SERVER = 'ftp.kernel.org' import ftplib def client_ftp_connection (server, nume de utilizator, mail): # deschideți conexiunea ftp = ftplib.FTP (server, nume de utilizator, mail) # listăm fișiere din directorul / pub ftp.cwd ("/ pub") print "Fișiere disponibile în% s:"% server files = ftp.dir () tipărește fișiere ftp.quit () if __name__ == '__main__': client_ftp_conexion ( server = FTP_SERVER_PATH, nume de utilizator = 'anonim', mail='[email protected] ',) 

Primul lucru pe care îl facem este să definim o variabilă în fișier care va conține calea serverului FTP la care vrem să facem conexiunea, în acest caz este ftp .kernel.org, de aici putem obține informații despre nucleu Linux.
Următorul act îl facem import din librărie ftplib menționat anterior, cu aceasta asigurăm posibilitatea de a utiliza toate metodele necesare pentru a vă conecta la serverul definit mai sus, pentru aceasta folosim metoda FTP la fel, acolo vom trece ruta, numele de utilizator și un e-mail.
Verificarea conexiuniiPentru a testa dacă conexiunea funcționează, folosim comanda cwd pentru a naviga la un director și apoi cu dir () Putem lista fișierele din acel folder de pe server, odată ce terminăm cu procedura noastră, apelăm metoda părăsi () pentru a încheia sesiunea și a închide conexiunea.
Acest cod trebuie să intre într-un fișier cu numele pe care îl dorim cu extensie .py astfel încât interpretul nostru Piton îl putem executa, pentru aceasta în calea unde se află fișierul nostru îl executăm cu cuvântul rezervat python și numele fișierului nostru, care ar trebui să ne ofere ceva similar cu ceea ce vedem în următorul ecran:

MARI

Deși în exemplul anterior putem lista fișierele unui server, ceea ce este destul de util pentru a obține informații de la acestea, ceva mai puternic este în măsură să încărca fișiere. Utilitățile acestui lucru sunt multe, putem număra, de exemplu, transferul de fișiere rezultate dintr-o aplicație pentru procesare de la alta sau poate face backup-uri ale unui computer în altul care se află în rețea. Desigur, astăzi pot exista soluții mult mai elegante, totuși nu este suficient să o putem realiza cu o aplicație pe care o dezvoltăm noi înșine.
CerinţăCerința suplimentară de care avem nevoie pentru acest exercițiu este să avem un server FTP local în echipamentul nostru de testare, pentru aceasta dacă avem un sistem Linux pe care îl putem folosi wu-ftp, dar dacă suntem pe platformă Windows putem folosi Filezilla Server, care este gratuit.
Indiferent de serverul pe care îl putem folosi, trebuie să avem permisiuni sau posibilitatea unui acces anonim, oricum în următorul cod vom vedea într-un mod mai bun cum putem încărca fișiere.
Noi trebuie creați un utilizator și un cont FTP În serverul local pe care îl creăm pentru a putea folosi acest exemplu, acesta funcționează și cu servere la distanță, trebuie pur și simplu să ne asigurăm că avem acreditările noastre actualizate. Apoi putem folosi următorul cod:
 #! / usr / bin / env python import os import argparse import ftplib import getpass SERVER_FTP_LOCAL = 'localhost' FILE_TO_UPLOAD = 'example.txt' def upload_ftp (server, nume de utilizator, parolă, upload_file): print "Conectarea la server:% s" % server ftp = ftplib.FTP (server) print "Logare ca: utilizator =% s"% nume utilizator ftp.login (nume utilizator, parolă) ext = os.path.splitext (upload_file) [1] dacă ext în (". txt "," .htm "," .html "): ftp.storlines (" STOR "+ upload_file, open (upload_file)) else: ftp.storbinary (" STOR "+ upload_file, open (upload_file," rb "), 1024) print "Fișier încărcat:% s"% upload_file dacă __name__ == '__main__': parser = argparse.ArgumentParser (description = 'Exemplu de încărcare a fișierelor FTP') parser.add_argument ('- server', action = "store" , dest = "server", implicit = SERVER_FTP_LOCAL) parser.add_argument ('- file', action = "store", dest = "file_upload", implicit = FILE_TO_UPLOAD) parser.add_argument ('- user', action = "store" , dest = "n user_name ", implicit = getpass.getuser ()) application_parameters = parser.parse_args () server, upload_file, user_name = application_parameters.server, application_parameters. upload_file, application_parameters.user_name parola: parola: getpass.getpass parola (prompt =") parola: getpass.getpass (prompt = ") upload_ftp (server, nume de utilizator, parolă, upload_file) 

În acest exemplu, pe lângă importul bibliotecii ftplib, importăm și biblioteci tu pentru a putea accesa comenzile sistemului de operare, folosim suplimentar argparse Da getpass pentru a procesa utilizarea parametrilor introduși de utilizator și astfel a face programul nostru mai dinamic.
Apoi definim câteva constante cu care vom stabili serverul și un exemplu de fișier pe care îl vom încărca în folderul definit de utilizatorul nostru FTP. Următorul pas este deschiderea conexiunii FTPCu toate acestea, în acest caz vom folosi un nume de utilizator și o parolă, deoarece, în teorie, accesăm un server cu autentificare non-anonimă, acest lucru este în principal din motive de securitate și, de asemenea, pentru a arăta că exemplul nostru funcționează în alte cazuri.
Continuăm evaluarea extensiei fișierului nostru, cu aceasta vom vedea dacă este un fișier text, pentru aceasta îl folosim storlines (), cu care nu vom afecta conținutul aceluiași, în caz de a fi o altă extensie diferită de cele definite vom folosi metoda storbinary () pentru a putea trece fișierul în forma sa originală cu conținutul său binar, astfel nu îl corupe și îi permite să fie folosit în continuare.
În cele din urmă folosim argparse () pentru a putea lua argumentele pe care le poate introduce un utilizator pentru a utiliza programul nostru, cu excepția faptului că, dacă nu plasează valori, vor fi luate valorile globale definite în cadrul programului nostru. Ne rulăm programul și dacă totul a ieșit corect, vom putea vedea următoarea ieșire în consola noastră:

MARI

Observăm că, în acest caz, parametrul utilizator este singurul pe care îl folosim, deoarece pe serverul nostru avem un utilizator numit test-python, apoi introducem parola atribuită utilizatorului menționat și încărcarea fișierului se efectuează eficient.
Cu aceasta terminăm acest tutorial, am învățat cum să facem o conexiune FTP dintr-un program realizat în Piton, important aici este să observăm cum, cu metodele care provin din biblioteca standard a Piton am reușit să realizăm funcționalități care altfel ne-ar fi luat mult timp, în afară de cantitatea mare de cod care ar trebui generată. Vă recomandăm să continuați cercetarea documentației oficiale a librăriei ftplib, în acest fel ne vom spori semnificativ abilitățile în lume Piton, deschizând astfel ușile pentru a fi mai eficienți ca dezvoltatori în această lume tehnologică extrem de competitivă.

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave