Rad s FTP -om iz Pythona

Sadržaj
Piton To je jezik koji nam omogućuje da na jednostavan i intuitivan način uključimo rad s različitim funkcionalnostima operacijskih sustava, zahvaljujući velikom broju biblioteka i dokumentacije koji na internetu postoje besplatno i dobro objašnjeni.
Jedna od jačih strana ovog jezika je rad s mrežnim protokolima, među kojima možemo spomenuti FTP i nešto uobičajenije, kao što je e -pošta, s tim možemo razviti programe ili aplikacije koji nam omogućuju automatsko postavljanje datoteka na udaljena računala ako to želimo, a sve bez potrebe za pribjegavanjem drugim alatima izvan ekosustava Piton.
Protokol FTP omogućuje nam prijenos datoteka putem veze u mreži. Obično je to protokol koji koristimo za daljinsko povezivanje sa poslužiteljima i na taj način manipuliramo datotekama, obično luka 21No, to je u potpunosti po ukusu potrošača, pa ako vidimo neki drugi port, ne čudi da se radi o prilagođenoj instalaciji.
Za interakciju s ovim protokolom potrebne su nam dvije stvari, prva je poslužitelj koji je u eteru i dostupan našoj mreži, može biti na istoj mreži ili možda na internetu. Druga stvar koja je potrebna je klijent koji može slati i primati informacije s navedenog poslužitelja, ovaj klijent mora imati mogućnost korištenja portova navedenih uslugom i uspostavljene autentifikacije.
Uključite klijenta Piton da mogu uspostaviti vezu FTP Moguće je ispočetka, međutim napor koji bi nam uložio bio bi znatan i na kraju bi mogao biti uzalud ako nam ne treba nešto posebno.
Kako bi se izbjegle neugodnosti i nepotreban razvoj Piton pruža nam knjižnicu koja nam već pomaže u velikom dijelu posla. Govorimo o ftplib, sadrži potpune i već provjerene i dorađene metode koje olakšavaju komunikaciju pomoću protokola prijenosa datoteka FTP.
Kako koristiti knjižnicu?Za korištenje ove knjižnice jednostavno je moramo uključiti u naš program prema uputama uvoz i tada započinjemo svoj normalni razvoj. U sljedećem primjeru napravit ćemo mali klijentski program koji se može povezati s poslužiteljem FTP, u ovom slučaju ćemo koristiti uslugu kernel.org koja je Linux web stranica i s tim ćemo popisati dostupne datoteke.
Odabrali smo ovaj poslužitelj jer ne treba autentifikaciju i omogućuje nam korištenje anonimnog načina rada. Pogledajmo onda kôd i učinit ćemo odgovarajuće objašnjenje, jedini zahtjev koji trebamo je imati Python 2.7 i internetska veza:
 #! / usr / bin / env python PATH_FTP_SERVER = 'ftp.kernel.org' uvoz ftplib def client_ftp_connection (poslužitelj, korisničko ime, pošta): # otvorimo vezu ftp = ftplib.FTP (poslužitelj, korisničko ime, pošta) # navodimo popis datoteke u direktoriju / pub ftp.cwd (" / pub") print "Datoteke dostupne u% s:"% datoteka poslužitelja = ftp.dir () ispis datoteka ftp.quit () ako je __name__ == '__main__': client_ftp_conexion ( poslužitelj = FTP_SERVER_PATH, korisničko ime = 'anonimno', mail='[email protected] ',) 

Prvo što radimo je definirati varijablu unutar datoteke koja će sadržavati put poslužitelja FTP s kojim želimo uspostaviti vezu, u ovom slučaju to je to ftp .kernel.org, ovdje možemo dobiti informacije o kernelu Linux.
Sljedeći čin činimo uvoz iz knjižare ftplib prethodno spomenuto, time osiguravamo mogućnost korištenja svih potrebnih metoda za povezivanje s gore definiranim poslužiteljem, za to koristimo metodu FTP istog, tamo ćemo proći rutu, korisničko ime i e -poštu.
Provjera vezeZa provjeru funkcioniranja veze koristimo naredbu cwd za navigaciju do direktorija, a zatim pomoću dir () Možemo popisati datoteke u toj mapi na poslužitelju, nakon što završimo s procedurom, zovemo metodu prestati () da biste prekinuli sesiju i prekinuli vezu.
Ovaj kôd mora ići u datoteku naziva koji želimo s nastavkom .py tako da naš tumač Piton mogu izvršiti, jer to na putu na kojem se nalazi naša datoteka izvršavamo rezerviranom riječju python i naziv naše datoteke, što bi nam trebalo dati nešto slično onome što vidimo na sljedećem ekranu:

POVEĆAJTE

Iako u prethodnom primjeru možemo navesti datoteke poslužitelja, što je vrlo korisno za dobivanje informacija s njih, nešto moćnije je u mogućnosti učitavanje datoteka. Korisni programi ovoga su mnogi, možemo računati, na primjer, prijenos datoteka koje su rezultat jedne aplikacije za obradu iz druge, ili možda napraviti sigurnosnu kopiju računala u drugoj koja je unutar mreže. Naravno, danas mogu postojati mnogo elegantnija rješenja, međutim nije dovoljno biti u mogućnosti to postići aplikacijom koju sami razvijamo.
ZahtjevDodatni zahtjev koji nam je potreban za ovu vježbu je da imamo lokalni FTP poslužitelj u našoj testnoj opremi, za ovo ako imamo Linux sustav možemo koristiti wu-ftp, ali ako smo na platformi Windows možemo koristiti Filezilla poslužitelj koji je besplatan za korištenje.
Koji god poslužitelj možemo koristiti, moramo imati dopuštenja ili mogućnost anonimnog pristupa, u svakom slučaju u sljedećem kodu ćemo na bolji način vidjeti kako možemo učitavati datoteke.
Moramo stvoriti korisnički i FTP račun Na lokalnom poslužitelju koji stvaramo kako bismo mogli koristiti ovaj primjer, on također radi s udaljenim poslužiteljima, jednostavno se moramo pobrinuti da imamo aktualne akreditive. Tada možemo upotrijebiti sljedeći kôd:
 #! / usr / bin / env python uvoz os uvoz argparse uvoz ftplib uvoz getpass SERVER_FTP_LOCAL = 'localhost' FILE_TO_UPLOAD = 'example.txt' def upload_ftp (poslužitelj, korisničko ime, lozinka, upload_file): print "Povezivanje sa poslužiteljem:% s" % poslužitelj ftp = ftplib.FTP (poslužitelj) ispis "Prijava kao: korisnik =% s"% korisničko ime ftp.login (korisničko ime, lozinka) ext = os.path.splitext (upload_file) [1] ako je ext u (". txt "," .htm "," .html "): ftp.storlines (" STOR " + upload_file, open (upload_file)) else: ftp.storbinary (" STOR " + upload_file, open (upload_file," rb "), 1024) ispišite "Prenesena datoteka:% s"% upload_file ako je __name__ == '__main__': parser = argparse.ArgumentParser (description = 'Primjer učitavanja FTP datoteka') parser.add_argument ('- poslužitelj', action = "store" , dest = "poslužitelj", zadano = SERVER_FTP_LOCAL) parser.add_argument ('- datoteka', akcija = "trgovina", dest = "datoteka_učitavanje", zadana = FILE_TO_UPLOAD) parser.add_argument ('- korisnik', akcija = "trgovina" , dest = "n user_name ", default = getpass.getuser ()) application_parameters = parser.parse_args () poslužitelj, upload_file, user_name = application_parameters.server, application_parameters. upload_file, application_parameters.user_name lozinka: lozinka: getpass.getpass lozinka (prompt ="): getpass.getpass (prompt = ") upload_ftp (poslužitelj, korisničko ime, lozinka, upload_file) 

U ovom primjeru, osim uvoza knjižnice ftplib, uvozimo i knjižnice vas za pristup naredbama operacijskog sustava dodatno koristimo argparse Y getpass kako bismo obradili uporabu parametara koje je unijeo korisnik i time naš program učinili dinamičnijim.
Zatim definiramo nekoliko konstanti s kojima ćemo uspostaviti poslužitelj i datoteku primjera koju ćemo prenijeti u mapu koju je definirao naš korisnik FTP. Sljedeći korak je otvaranje veze FTPMeđutim, u ovom slučaju koristit ćemo korisničko ime i lozinku, budući da teoretski pristupamo poslužitelju s neanonimnom autentifikacijom, to je uglavnom iz sigurnosnih razloga, a također i radi pokazivanja da naš primjer funkcionira u drugim slučajevima.
Nastavljamo procjenjivati ​​proširenje naše datoteke, s tim ćemo vidjeti je li riječ o tekstualnoj datoteci, za to koristimo storlines (), s kojim nećemo utjecati na sadržaj istog, u slučaju da se radi o drugom proširenju različitom od definiranog upotrijebit ćemo metodu storbinary () kako bi mogli proslijediti datoteku u izvornom obliku s binarnim sadržajem, ne oštećujući je i ne dopuštajući daljnju upotrebu.
Na kraju koristimo argparse () kako bi mogli uzeti argumente koje korisnik može unijeti za korištenje našeg programa, s izuzetkom da će, ako ne postavi vrijednosti, biti uzete globalne vrijednosti definirane u našem programu. Pokrećemo naš program i ako je sve prošlo kako treba, moći ćemo vidjeti sljedeći izlaz na našoj konzoli:

POVEĆAJTE

Napominjemo da u ovom slučaju korisnički parametar jedini koristimo, budući da na našem poslužitelju imamo korisnika koji se zove test-python, zatim uvodimo lozinku dodijeljenu navedenom korisniku i prijenos datoteke se učinkovito provodi.
Ovim smo završili ovaj vodič, naučili smo kako uspostaviti vezu FTP iz programa napravljenog u Piton, ovdje je važno napomenuti kako s metodama koje dolaze iz standardne knjižnice Piton uspjeli smo izvesti funkcionalnosti za koje bi nam inače trebalo puno vremena, osim velike količine koda koji bi se morao generirati. Preporučujemo da nastavite s istraživanjem službene dokumentacije knjižare ftplib, na ovaj način ćemo značajno povećati svoje vještine u svijetu Piton, otvarajući tako vrata da budemo učinkovitiji kao programeri u ovom visoko konkurentnom tehnološkom svijetu.
wave wave wave wave wave