Darbs ar FTP no Python

Satura rādītājs
Python Tā ir valoda, kas ļauj mums viegli un intuitīvi iekļaut darbu ar dažādām operētājsistēmu funkcijām, pateicoties lielajam bibliotēku skaitam un dokumentācijai, kas tīklā ir pieejama bez maksas un labi izskaidrota.
Viens no šīs valodas spēcīgākajiem punktiem ir darbs ar tīkla protokoliem, starp kuriem var minēt FTP un kaut kas daudz izplatītāks, piemēram, e -pasts, ar to mēs varam izstrādāt programmas vai lietojumprogrammas, kas ļauj mums, ja vēlamies, automātiski augšupielādēt failus attālajos datoros, turklāt bez nepieciešamības izmantot citus rīkus ārpus ekosistēmas. Python.
Protokols FTP ļauj mums pārsūtīt failus, izmantojot savienojumu tīklā. Parasti mēs izmantojam protokolu, lai attālināti izveidotu savienojumu ar serveriem un šādā veidā manipulētu ar failiem, parasti ar osta 21Tomēr tas ir pilnībā atkarīgs no patērētāja gaumes, tādēļ, ja mēs redzam citu ostu, nav pārsteidzoši, ka tā ir pielāgota instalācija.
Lai mijiedarbotos ar šo protokolu, mums ir vajadzīgas divas lietas, pirmā ir serveris, kas atrodas gaisā un ir pieejams mūsu tīklam, tas var būt tajā pašā tīklā vai, iespējams, internetā. Otra lieta, kas nepieciešama, ir klients, kas var nosūtīt un saņemt informāciju no minētā servera, šim klientam ir jābūt iespējai izmantot pakalpojuma norādītās ostas un izveidoto autentifikāciju.
Piesaistiet klientu Python ka varu izveidot savienojumu FTP No nulles tas ir iespējams, tomēr pūles, ko tas mums prasītu, būtu ievērojamas, un galu galā tas var būt veltīgi, ja mums nav vajadzīgs kaut kas īpašs.
Lai izvairītos no neērtībām un nevajadzīgas attīstības Python nodrošina mums bibliotēku, kas mums jau palīdz lielā daļā darbu. Mēs runājam par ftplib, tas satur pilnīgas un jau pārbaudītas un rafinētas metodes, kas atvieglo saziņu, izmantojot failu pārsūtīšanas protokolu FTP.
Kā izmantot bibliotēku?Lai izmantotu šo bibliotēku, mums tā vienkārši jāiekļauj mūsu programmā, izmantojot instrukciju importēt un tad mēs sākam savu normālo attīstību. Šajā piemērā mēs izveidosim mazu klientu programmu, kas var izveidot savienojumu ar serveri FTP, šajā gadījumā mēs izmantosim pakalpojumu kernel.org kas ir Linux vietne, un ar to mēs uzskaitīsim pieejamos failus.
Mēs izvēlamies šo serveri, jo tam nav nepieciešama autentifikācija, un tas ļauj mums izmantot anonīmo režīmu. Apskatīsim kodu un pēc tam izdarīsim atbilstošu skaidrojumu, vienīgā prasība, kas mums nepieciešama, ir jābūt Python 2.7 un interneta pieslēgums:
 #! / usr / bin / env python PATH_FTP_SERVER = 'ftp.kernel.org' importēt ftplib def client_ftp_connection (serveris, lietotājvārds, pasts): # atveriet savienojumu ftp = ftplib.FTP (serveris, lietotājvārds, pasts) # mēs uzskaitām sarakstu faili / pub direktorijā ftp.cwd (" / pub") print "Faili pieejami% s:"% servera faili = ftp.dir () drukāt failus ftp.quit () if __name__ == '__main__': client_ftp_conexion ( serveris = FTP_SERVER_PATH, lietotājvārds = 'anonīms', mail='[email protected] ',) 

Pirmā lieta, ko mēs darām, ir definēt mainīgo failā, kurā būs servera ceļš FTP ar kuru mēs vēlamies izveidot savienojumu, šajā gadījumā tā ir ftp .kernel.org, šeit mēs varam iegūt informāciju par kodolu Linux.
Nākamo darbību mēs veicam importēt no grāmatnīcas ftplib Iepriekš minētais, ar to mēs nodrošinām iespēju izmantot visas nepieciešamās metodes, lai izveidotu savienojumu ar iepriekš definēto serveri, tāpēc mēs izmantojam šo metodi FTP tajā pašā laikā mēs nokārtosim maršrutu, lietotājvārdu un e -pastu.
Savienojuma pārbaudeLai pārbaudītu, vai savienojums darbojas, mēs izmantojam komandu cwd lai pārietu uz direktoriju un pēc tam ar dir () Mēs varam uzskaitīt failus šajā mapē serverī, kad esam pabeiguši procedūru, mēs saucam šo metodi atmest () lai pārtrauktu sesiju un pārtrauktu savienojumu.
Šim kodam ir jāietilpst vēlamā nosaukuma failā ar paplašinājumu .py lai mūsu tulks Python var izpildīt, jo šajā ceļā, kur atrodas mūsu fails, mēs izpildām to ar rezervēto vārdu python un mūsu faila nosaukums, kam vajadzētu sniegt mums kaut ko līdzīgu tam, ko redzam nākamajā ekrānā:

PALIELINĀT

Lai gan iepriekšējā piemērā mēs varam uzskaitīt servera failus, kas ir diezgan noderīgi, lai no tiem iegūtu informāciju, kaut kas jaudīgāks augšupielādēt failus. Šim nolūkam ir daudz noderīgu pakalpojumu, mēs varam uzskaitīt, piemēram, failu pārsūtīšanu no vienas lietojumprogrammas apstrādei no citas vai, iespējams, izveidot datora dublējumus citā tīklā esošā datorā. Protams, šodien var būt daudz elegantu risinājumu, tomēr nepietiek, lai to varētu sasniegt ar lietojumprogrammu, kuru izstrādājam paši.
PrasībaPapildu prasība, kas mums nepieciešama šim uzdevumam, ir a vietējais FTP serveris mūsu testēšanas iekārtās, ja mēs izmantojam Linux sistēmu wu-ftp, bet, ja mēs esam uz platformas Windows mēs varam izmantot Filezilla serveri, kuru var izmantot bez maksas.
Neatkarīgi no servera, ko mēs varam izmantot, mums ir jābūt atļaujām vai anonīmas piekļuves iespējai, jebkurā gadījumā nākamajā kodā mēs labāk redzēsim, kā mēs varam augšupielādēt failus.
Mums vajadzētu izveidot lietotāju un FTP kontu Vietējā serverī, ko mēs izveidojam, lai varētu izmantot šo piemēru, tas darbojas arī ar attāliem serveriem, mums vienkārši jāpārliecinās, vai mūsu akreditācijas dati ir atjaunināti. Tad mēs varam izmantot šādu kodu:
 #! / usr / bin / env python import os import argparse import ftplib import getpass SERVER_FTP_LOCAL = 'localhost' FILE_TO_UPLOAD = 'example.txt' def upload_ftp (serveris, lietotājvārds, parole, upload_file): print "Savienojuma izveide ar serveri:% s" % servera ftp = ftplib.FTP (serveris) drukāt "Piesakoties kā: lietotājs =% s"% lietotājvārds ftp.login (lietotājvārds, parole) ext = os.path.splitext (augšupielādes fails) [1], ja ext in (". txt "," .htm "," .html "): ftp.storlines (" STOR " + upload_file, open (upload_file)) else: ftp.storbinary (" STOR " + upload_file, open (upload_file," rb "), 1024) print "Augšupielādēts fails:% s"% upload_file if __name__ == '__main__': parser = argparse.ArgumentParser (description = 'FTP failu augšupielādes piemērs') parser.add_argument ('- server', action = "store" , dest = "serveris", noklusējums = SERVER_FTP_LOCAL) parser.add_argument ('- fails', action = "veikals", dest = "file_upload", noklusējums = FILE_TO_UPLOAD) parser.add_argument ('- lietotājs', action = "veikals" , dest = "n lietotāja_nosaukums ", noklusējuma = getpass.getuser ()) application_parameters = parser.parse_args () serveris, augšupielādes fails, lietotāja_nosaukums = application_parameters.server, application_parameters. upload_file, application_parameters.user_name parole: parole: getpass.getpass (prompt =") parole: getpass.getpass the (prompt = ") upload_ftp (serveris, lietotājvārds, parole, augšupielādes fails) 

Šajā piemērā papildus bibliotēkas importēšanai ftplib, mēs importējam arī bibliotēkas jūs lai varētu piekļūt operētājsistēmas komandām, mēs papildus izmantojam argparse Y getpass lai apstrādātu lietotāja ievadīto parametru izmantošanu un tādējādi padarītu mūsu programmu dinamiskāku.
Pēc tam mēs definējam pāris konstantes, ar kurām mēs izveidosim serveri, un piemēra failu, ko augšupielādēsim lietotāja definētajā mapē FTP. Nākamais solis ir atvērt savienojumu FTPTomēr šajā gadījumā mēs izmantosim lietotājvārdu un paroli, jo teorētiski mēs piekļūstam serverim ar neanonīmu autentifikāciju, tas galvenokārt ir drošības apsvērumu dēļ, kā arī lai parādītu, ka mūsu piemērs darbojas citos gadījumos.
Mēs turpinām izvērtēt mūsu faila paplašinājumu, tāpēc mēs redzēsim, vai tas ir teksta fails storlines (), ar kuru mēs neietekmēsim tā saturu, ja mēs esam cits paplašinājums, kas atšķiras no definētajiem, mēs izmantosim metodi storbinārs () lai varētu nodot failu tā sākotnējā formā ar tā bināro saturu, tādējādi to nesabojājot un ļaujot to turpināt izmantot.
Beidzot izmantojam argparse () lai varētu izmantot argumentus, ko lietotājs var ieviest, lai izmantotu mūsu programmu, izņemot to, ka, ja tas neievieto vērtības, tiks ņemtas vērā mūsu programmā noteiktās globālās vērtības. Mēs palaižam savu programmu un, ja viss ir izgājis pareizi, mūsu konsolē varēsim redzēt šādu izvadi:

PALIELINĀT

Mēs atzīmējam, ka šajā gadījumā lietotāja parametrs ir vienīgais, ko mēs izmantojam, jo ​​mūsu serverī mums ir lietotājs tests-pitons, tad mēs ieviešam šim lietotājam piešķirto paroli, un faila augšupielāde tiek veikta efektīvi.
Ar to mēs pabeidzam šo apmācību, mēs esam iemācījušies izveidot savienojumu FTP gadā izveidotajā programmā Python, šeit ir svarīgi atzīmēt, kā ar metodēm, kas nāk no standarta bibliotēkas Python mums ir izdevies veikt funkcijas, kas citādi mums būtu prasījušas ilgu laiku, izņemot lielo koda daudzumu, kas būtu jāģenerē. Mēs iesakām turpināt izpētīt grāmatnīcas oficiālo dokumentāciju ftplib, tādā veidā mēs ievērojami paaugstināsim savas prasmes pasaulē Python, tādējādi paverot iespējas būt efektīvākiem kā izstrādātājiem šajā ļoti konkurētspējīgajā tehnoloģiju pasaulē.
wave wave wave wave wave