Innholdsfortegnelse
Python Det er et språk som lar oss integrere arbeid med de forskjellige funksjonene i operativsystemene på en enkel og intuitiv måte, takket være det store antallet biblioteker og dokumentasjon som finnes på nettet gratis og godt forklart.Et av de sterkeste punktene i dette språket er arbeidet med nettverksprotokoller, blant annet kan vi nevne FTP og noe mer vanlig som e -post, med dette kan vi utvikle programmer eller applikasjoner som lar oss laste opp filer til eksterne datamaskiner på en automatisk måte hvis vi ønsker det, alt uten å måtte ty til andre verktøy utenfor økosystemet til Python.
Protokollen FTP lar oss gjøre filoverføringer gjennom en tilkobling i et nettverk. Normalt er det protokollen vi bruker til å koble eksternt til servere og på denne måten manipulere filer, vanligvis port 21Dette er imidlertid helt opp til forbrukerens smak, så hvis vi ser en annen port, er det ikke overraskende at det er en tilpasset installasjon.
For å samhandle med denne protokollen trenger vi to ting, den første er en server som er på lufta og tilgjengelig for nettverket vårt, den kan være på samme nettverk eller kanskje på Internett. Den andre tingen som trengs er en klient som kan sende og motta informasjon fra serveren, denne klienten må ha muligheten til å bruke portene som er angitt av tjenesten og den etablerte autentiseringen.
Få en klient inn Python at jeg kan opprette forbindelse FTP Fra bunnen av er det mulig, men innsatsen som det ville ta oss ville være betydelig, og til slutt kan det være forgjeves hvis vi ikke trenger noe spesielt.
For å unngå ulemper og unødvendig utvikling Python gir oss et bibliotek som allerede hjelper oss med mye av arbeidet. Vi snakker om ftplib, den inneholder komplette og allerede testede og raffinerte metoder som letter kommunikasjon ved hjelp av filoverføringsprotokollen FTP.
Hvordan bruke biblioteket?For å bruke dette biblioteket må vi bare inkludere det i programmet vårt ved å bruke instruksjonene import og så starter vi vår normale utvikling. I det følgende eksemplet skal vi lage et lite klientprogram som kan koble seg til en server FTP, i dette tilfellet skal vi bruke tjenesten kernel.org som er et Linux -nettsted, og med det vil vi liste de tilgjengelige filene.
Vi velger denne serveren fordi den ikke trenger autentisering, og den lar oss bruke anonym modus. La oss deretter se koden, og så vil vi gjøre den tilsvarende forklaringen, det eneste kravet vi trenger er å ha Python 2.7 og Internett -tilkobling:
#! / usr / bin / env python PATH_FTP_SERVER = 'ftp.kernel.org' import ftplib def client_ftp_connection (server, brukernavn, mail): # åpne tilkoblingen ftp = ftplib.FTP (server, brukernavn, mail) # vi viser filer i / pub -katalogen ftp.cwd (" / pub") print "Filer tilgjengelig i% s:"% server files = ftp.dir () print files ftp.quit () if __name__ == '__main__': client_ftp_conexion ( server = FTP_SERVER_PATH, brukernavn = 'anonymt', mail='[email protected] ',)
Det første vi gjør er å definere en variabel i filen som skal inneholde serverbanen FTP som vi ønsker å koble til, i dette tilfellet er det ftp .kernel.org, det er her vi kan få kjerneinformasjon fra Linux.
Neste handling gjør vi import fra bokhandelen ftplib nevnte, med dette sikrer vi muligheten for å bruke alle nødvendige metoder for å koble til serveren definert ovenfor, for dette bruker vi metoden FTP av det samme, der vil vi passere ruten, brukernavnet og en e -post.
Kontrollerer tilkoblingenFor å teste at tilkoblingen fungerer bruker vi kommandoen cwd for å navigere til en katalog og deretter med dir () Vi kan liste filene i den mappen på serveren, når vi er ferdige med prosedyren kaller vi metoden slutte () for å avslutte økten og lukke tilkoblingen.
Denne koden må gå i en fil med navnet vi vil ha med utvidelsen .py slik at vår tolk Python kan utføre det, for dette i banen der filen vår ligger, kjører vi den med det reserverte ordet python og navnet på filen vår, som burde gi oss noe som ligner på det vi ser på følgende skjermbilde:
FORSTØRRE
KravDet ekstra kravet vi trenger for denne øvelsen er å ha en lokal FTP -server i testutstyret, for dette hvis vi har et Linux -system vi kan bruke wu-ftp, men hvis vi er på plattformen Windows vi kan bruke Filezilla Server som er gratis å bruke.
Uansett hvilken server vi kan bruke, må vi ha tillatelser eller mulighet for anonym tilgang, uansett i den følgende koden vil vi se på en bedre måte hvordan vi kan laste opp filer.
Vi må opprette en bruker og en FTP -konto På den lokale serveren som vi oppretter for å kunne bruke dette eksemplet, fungerer det også med eksterne servere, vi må ganske enkelt sørge for at vi har legitimasjonen vår oppdatert. Deretter kan vi bruke følgende kode:
#! / usr / bin / env python import os import argparse import ftplib import getpass SERVER_FTP_LOCAL = 'localhost' FILE_TO_UPLOAD = 'eksempel.txt' def upload_ftp (server, brukernavn, passord, upload_file): print "Koble til server:% s" % server ftp = ftplib.FTP (server) print "Logg inn som: user =% s"% brukernavn ftp.login (brukernavn, passord) ext = os.path.splitext (upload_file) [1] hvis ext (". txt "," .htm "," .html "): ftp.storlines (" STOR " + upload_file, open (upload_file)) else: ftp.storbinary (" STOR " + upload_file, open (upload_file," rb ")), 1024) skriv ut "Lastet opp fil:% s"% upload_file hvis __name__ == '__main__': parser = argparse.ArgumentParser (beskrivelse = 'Eksempel på opplasting av FTP-filer') parser.add_argument ('- server', action = 'store' , dest = "server", default = SERVER_FTP_LOCAL) parser.add_argument ('- fil', action = "store", dest = "file_upload", default = FILE_TO_UPLOAD) parser.add_argument ('- bruker', action = "lagre" , dest = "n user_name ", default = getpass.getuser ()) application_parameters = parser.parse_args () server, upload_file, user_name = application_parameters.server, application_parameters. upload_file, application_parameters.user_name password: password: getpass.getpass the (prompt =") passord: getpass.getpass (prompt = ") upload_ftp (server, brukernavn, passord, upload_file)
I dette eksemplet, i tillegg til å importere biblioteket ftplib, vi importerer også biblioteker du for å få tilgang til operativsystemkommandoer, bruker vi i tillegg argparse Y komme forbi for å behandle bruken av parametere som er angitt av brukeren og dermed gjøre programmet vårt mer dynamisk.
Deretter definerer vi et par konstanter som vi skal etablere serveren med og en eksempelfil som vi vil laste opp til mappen som er definert av brukeren vår FTP. Det neste trinnet er å åpne tilkoblingen FTPImidlertid vil vi i dette tilfellet bruke et brukernavn og passord, siden vi i teorien får tilgang til en server med ikke-anonym autentisering, dette er hovedsakelig av sikkerhetsmessige årsaker og også for å vise at vårt eksempel fungerer i andre tilfeller.
Vi fortsetter å evaluere utvidelsen av filen vår, med dette vil vi se om det er en tekstfil, for dette bruker vi butikklinjer (), som vi ikke vil påvirke innholdet i det samme, i tilfelle det er en annen utvidelse som er forskjellig fra de definerte, vil vi bruke metoden storbinary () for å kunne sende filen i sin opprinnelige form med binært innhold, og dermed ikke ødelegge den og la den fortsette å bli brukt.
Til slutt bruker vi argparse () for å kunne ta argumentene som en bruker kan introdusere for å bruke programmet vårt, med unntak av at hvis det ikke plasserer verdier, vil de globale verdiene som er definert i programmet vårt bli tatt. Vi kjører programmet vårt, og hvis alt har gått ut riktig, vil vi kunne se følgende utgang i konsollen vår:
FORSTØRRE
Med dette fullfører vi denne opplæringen, vi har lært hvordan du oppretter en forbindelse FTP fra et program laget i Python, det viktige her er å merke seg hvordan med metoder som kommer fra standardbiblioteket til Python vi har klart å utføre funksjoner som ellers ville ha tatt lang tid, bortsett fra den store mengden kode som måtte genereres. Vi anbefaler å fortsette å undersøke den offisielle dokumentasjonen til bokhandelen ftplib, på denne måten vil vi øke våre ferdigheter i verden betydelig Python, og åpner dermed dørene for å bli mer effektive som utviklere i denne svært konkurransedyktige teknologiske verden.