Arbetar med FTP från Python

Innehållsförteckning
Pytonorm Det är ett språk som gör att vi kan integrera arbete med de olika funktionerna i operativsystem på ett enkelt och intuitivt sätt, tack vare det stora antalet bibliotek och dokumentation som finns på nätet gratis och väl förklarat.
En av de starkaste punkterna i detta språk är arbetet med nätverksprotokoll, bland vilka vi kan nämna FTP och något mer vanligt som e -post, med detta kan vi utveckla program eller applikationer som gör att vi kan ladda upp filer till fjärrdatorer automatiskt om vi vill, allt utan att behöva använda andra verktyg utanför ekosystemet för Pytonorm.
Protokollet FTP tillåter oss att göra filöverföringar via en anslutning i ett nätverk. Normalt är det protokollet som vi använder för att fjärransluta till servrar och på så sätt manipulera filer, vanligtvis port 21Detta är dock helt upp till konsumentens smak, så om vi ser en annan port är det inte förvånande att det är en anpassad installation.
För att interagera med detta protokoll behöver vi två saker, den första är en server som finns i luften och tillgänglig för vårt nätverk, den kan vara på samma nätverk eller kanske på Internet. Det andra som behövs är en klient som kan skicka och ta emot information från nämnda server, den här klienten måste ha möjlighet att använda portarna som anges av tjänsten och den etablerade autentiseringen.
Gör en klient in Pytonorm att jag kan koppla FTP Från grunden är det möjligt, men ansträngningen som det skulle ta oss skulle vara stor och i slutändan kan det vara förgäves om vi inte behöver något speciellt.
För att undvika besvär och onödig utveckling Pytonorm ger oss ett bibliotek som redan hjälper oss med mycket av arbetet. Vi pratar om ftplib, den innehåller fullständiga och redan testade och förfinade metoder som underlättar kommunikation med hjälp av filöverföringsprotokollet FTP.
Hur använder man biblioteket?För att använda det här biblioteket måste vi helt enkelt inkludera det i vårt program med hjälp av instruktionen importera och sedan börjar vi vår normala utveckling. I följande exempel kommer vi att göra ett litet klientprogram som kan ansluta till en server FTP, i det här fallet kommer vi att använda tjänsten kernel.org som är en Linux -webbplats och med det kommer vi att lista de tillgängliga filerna.
Vi väljer den här servern eftersom den inte behöver autentisering och tillåter oss att använda anonymt läge. Låt oss sedan se koden och sedan gör vi motsvarande förklaring, det enda kravet vi behöver är att ha Python 2.7 och internetanslutning:
 #! / usr / bin / env python PATH_FTP_SERVER = 'ftp.kernel.org' import ftplib def client_ftp_connection (server, användarnamn, mail): # öppna anslutningen ftp = ftplib.FTP (server, användarnamn, mail) # vi listar filer i / pub -katalogen ftp.cwd (" / pub") print "Filer tillgängliga i% s:"% server files = ftp.dir () skriv ut filer ftp.quit () om __name__ == '__main__': client_ftp_conexion ( server = FTP_SERVER_PATH, användarnamn = 'anonym', mail='[email protected] ',) 

Det första vi gör är att definiera en variabel i filen som innehåller servervägen FTP som vi vill göra kopplingen till, i det här fallet är det ftp .kernel.org, det är här vi kan få kärninformation från Linux.
Nästa akt gör vi importera från bokhandeln ftplib ovannämnda, med detta säkerställer vi möjligheten att använda alla nödvändiga metoder för att ansluta till servern definierad ovan, för detta använder vi metoden FTP av samma, där passerar vi rutten, användarnamnet och ett mejl.
Kontrollerar anslutningenFör att testa att anslutningen fungerar använder vi kommandot cwd för att navigera till en katalog och sedan med dir () Vi kan lista filerna i den mappen på servern, när vi avslutat med vårt förfarande kallar vi metoden sluta med () för att avsluta sessionen och stänga anslutningen.
Den här koden måste finnas i en fil med det namn vi vill ha med tillägget .py så att vår tolk Pytonorm kan köra det, för detta i sökvägen där vår fil ligger kör vi det med det reserverade ordet python och namnet på vår fil, som borde ge oss något liknande det vi ser på följande skärm:

FÖRSTORA

Även om vi i föregående exempel kan lista filerna på en server, vilket är ganska användbart för att få information från dem, är något mer kraftfullt att kunna ladda upp filer. Verktygen för detta är många, vi kan till exempel räkna överföring av filer som härrör från en applikation för behandling från en annan, eller kanske göra säkerhetskopior av en dator i en annan som är i nätverket. Naturligtvis kan det idag finnas mycket mer eleganta lösningar, men det räcker inte för att kunna uppnå det med en applikation som vi utvecklar själva.
KravDet ytterligare kravet vi behöver för denna övning är att ha en lokal FTP -server i vår testutrustning, för detta om vi har ett Linux -system som vi kan använda wu-ftp, men om vi är på plattformen Windows vi kan använda Filezilla Server som är gratis att använda.
Oavsett vilken server vi kan använda måste vi ha behörigheter eller möjlighet till anonym åtkomst, men i följande kod kommer vi att se på ett bättre sätt hur vi kan ladda upp filer.
Vi måste skapa en användare och ett FTP -konto På den lokala servern som vi skapar för att kunna använda detta exempel fungerar det också med fjärrservrar, vi måste helt enkelt se till att vi har våra referenser uppdaterade. Då kan vi använda följande kod:
 #! / usr / bin / env python import os import argparse import ftplib import getpass SERVER_FTP_LOCAL = 'localhost' FILE_TO_UPLOAD = 'exempel.txt' def upload_ftp (server, användarnamn, lösenord, upload_file): print "Ansluter till server:% s" % server ftp = ftplib.FTP (server) skriv ut "Logga in som: user =% s"% användarnamn ftp.login (användarnamn, lösenord) ext = os.path.splitext (upload_file) [1] om ext (". txt "," .htm "," .html "): ftp.storlines (" STOR " + upload_file, open (upload_file)) else: ftp.storbinary (" STOR " + upload_file, open (upload_file," rb ")), 1024) print "Uploaded file:% s"% upload_file if __name__ == '__main__': parser = argparse.ArgumentParser (description = 'Exempel på överföring 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 ('- användare', action = 'store' , 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 =") password: getpass.getpass (prompt = ") upload_ftp (server, användarnamn, lösenord, upload_file) 

I det här exemplet, förutom att importera biblioteket ftplib, vi importerar också bibliotek du för att kunna komma åt operativsystemkommandon använder vi dessutom argparse Y getpass för att bearbeta användningen av parametrar som anges av användaren och på så sätt göra vårt program mer dynamiskt.
Sedan definierar vi ett par konstanter med vilka vi ska etablera servern och en exempelfil som vi kommer att ladda upp till den mapp som definieras av vår användare FTP. Nästa steg är att öppna anslutningen FTPMen i det här fallet kommer vi att använda ett användarnamn och lösenord, eftersom vi i teorin kommer åt en server med icke-anonym autentisering, detta är mestadels av säkerhetsskäl och för att visa att vårt exempel fungerar i andra fall.
Vi fortsätter utvärdera förlängningen av vår fil, med detta kommer vi att se om det är en textfil, för detta använder vi lagringslinjer (), med vilken vi inte kommer att påverka innehållet i densamma, om det är en annan tillägg som skiljer sig från de definierade kommer vi att använda metoden storbinary () för att kunna skicka filen i sin ursprungliga form med dess binära innehåll, vilket inte skadar den och låter den fortsätta att användas.
Slutligen använder vi argparse () för att kunna ta de argument som en användare kan införa för att använda vårt program, med undantag att om det inte placerar värden, kommer de globala värden som definieras inom vårt program att tas. Vi kör vårt program och om allt har gått ut korrekt kommer vi att kunna se följande utdata i vår konsol:

FÖRSTORA

Vi noterar att i detta fall är användarparametern den enda vi använder, eftersom vi har en användare som kallas på vår server test-python, då introducerar vi lösenordet som tilldelats användaren och uppladdningen av filen utförs effektivt.
Med detta avslutar vi denna handledning, vi har lärt oss hur man gör en anslutning FTP från ett program gjort i Pytonorm, det viktiga här är att notera hur med metoder som kommer från standardbiblioteket för Pytonorm vi har lyckats utföra funktioner som annars skulle ha tagit oss lång tid, förutom den stora mängden kod som skulle behöva genereras. Vi rekommenderar att du fortsätter att undersöka bokhandelns officiella dokumentation ftplib, på detta sätt kommer vi att öka våra kunskaper i världen avsevärt Pytonorm, vilket öppnar dörrarna för att bli mer effektiva som utvecklare i denna mycket konkurrenskraftiga tekniska värld.
wave wave wave wave wave