Práce s FTP z Pythonu

Obsah
Krajta Je to jazyk, který nám umožňuje snadno a intuitivně začlenit práci s různými funkcemi operačních systémů, a to díky velkému počtu knihoven a dokumentace, které na internetu existují zdarma a dobře vysvětleny.
Jednou z nejsilnějších stránek tohoto jazyka je práce se síťovými protokoly, mezi nimiž můžeme zmínit FTP a něco běžnějšího, jako je e -mail, pomocí kterého můžeme vyvíjet programy nebo aplikace, které nám umožňují automatizované nahrávání souborů na vzdálené počítače, pokud si to přejeme, a to vše bez nutnosti uchýlit se k dalším nástrojům mimo ekosystém Krajta.
Protokol FTP nám umožňuje provádět přenosy souborů prostřednictvím připojení v síti. Normálně je to protokol, který používáme pro vzdálené připojení k serverům a tímto způsobem manipulujeme se soubory, obvykle port 21To je však zcela na vkusu spotřebitele, takže pokud uvidíme jiný port, není divu, že se jedná o instalaci na míru.
Abychom mohli komunikovat s tímto protokolem, potřebujeme dvě věci, první je server, který je ve vzduchu a je k dispozici pro naši síť, může být ve stejné síti nebo třeba na internetu. Druhá věc, kterou je potřeba, je klient, který může odesílat a přijímat informace z uvedeného serveru, tento klient musí mít schopnost používat porty určené službou a zavedené ověřování.
Vytvořte klienta v Krajta že mohu navázat spojení FTP Od nuly je to možné, nicméně úsilí, které by nám to zabralo, by bylo značné a nakonec může být marné, pokud nepotřebujeme něco zvláštního.
Aby se předešlo nepříjemnostem a zbytečnému vývoji Krajta poskytuje nám knihovnu, která nám již pomáhá s velkou částí práce. Mluvíme o ftplib, obsahuje kompletní a již testované a vylepšené metody, které usnadňují komunikaci pomocí protokolu pro přenos souborů FTP.
Jak používat knihovnu?Abychom mohli tuto knihovnu používat, musíme ji jednoduše zahrnout do našeho programu pomocí instrukcí import a poté zahájíme normální vývoj. V následujícím příkladu vytvoříme program pro malé klienty, který se může připojit k serveru FTP, v tomto případě budeme službu používat kernel.org což je web Linuxu a s ním uvedeme seznam dostupných souborů.
Vybíráme tento server, protože nepotřebuje autentizaci a umožňuje nám používat anonymní režim. Podívejme se tedy na kód a pak uděláme odpovídající vysvětlení, jediný požadavek, který potřebujeme, je mít Python 2.7 a připojení k internetu:
 #! / usr / bin / env python PATH_FTP_SERVER = 'ftp.kernel.org' import ftplib def client_ftp_connection (server, uživatelské jméno, pošta): # otevřete připojení ftp = ftplib.FTP (server, uživatelské jméno, pošta) # uvedeme seznam soubory v adresáři / pub ftp.cwd (" / pub") tisk "Soubory dostupné v% s:"% server files = ftp.dir () tisk souborů ftp.quit () if __name__ == '__main__': client_ftp_conexion ( server = FTP_SERVER_PATH, uživatelské jméno = 'anonymní', mail='[email protected] ',) 

První věc, kterou uděláme, je definovat proměnnou v souboru, která bude obsahovat cestu k serveru FTP ke kterému chceme navázat spojení, v tomto případě je ftp .kernel.org, odtud můžeme získat informace o jádru Linux.
Další akt děláme import z knihkupectví ftplib výše uvedené, tímto zajišťujeme možnost použití všech nezbytných metod pro připojení k serveru definovanému výše, k tomu používáme metodu FTP tamtéž předáme trasu, uživatelské jméno a e -mail.
Kontrola připojeníChcete -li otestovat, zda připojení funguje, použijte příkaz cwd přejděte do adresáře a poté pomocí dir () Můžeme vypsat soubory v této složce na serveru, jakmile skončíme s naší procedurou, zavoláme metodu skončit () ukončení relace a ukončení připojení.
Tento kód musí jít do souboru s požadovaným názvem s příponou .py takže náš tlumočník Krajta můžeme jej spustit, proto jej v cestě, kde se nachází náš soubor, spustíme s vyhrazeným slovem python a název našeho souboru, což by nám mělo dát něco podobného tomu, co vidíme na následující obrazovce:

ZVĚTŠIT

Ačkoli v předchozím příkladu můžeme uvést soubory serveru, což je docela užitečné pro získání informací z nich, něco silnějšího je schopnost nahrát soubory. Těchto nástrojů je mnoho, můžeme počítat například s přenosem souborů vyplývajících z jedné aplikace pro zpracování z jiné, nebo třeba provádět zálohy počítače v jiném, který je v síti. Samozřejmě dnes může existovat mnohem elegantnější řešení, nicméně to nestačí na to, abychom toho mohli dosáhnout pomocí aplikace, kterou sami vyvíjíme.
PožadavekDalší požadavek, který pro toto cvičení potřebujeme, je mít a lokální FTP server v našem testovacím zařízení, proto pokud máme systém Linux, můžeme použít wu-ftp, ale pokud jsme na platformě Okna můžeme použít server Filezilla, který je zdarma k použití.
Ať už můžeme použít jakýkoli server, musíme mít oprávnění nebo možnost anonymního přístupu, každopádně v následujícím kódu lépe uvidíme, jak můžeme nahrávat soubory.
Musíme vytvořit uživatele a účet FTP Na místním serveru, který vytvoříme, abychom mohli použít tento příklad, funguje také se vzdálenými servery, prostě se musíme ujistit, že máme své přihlašovací údaje aktuální. Pak můžeme použít následující kód:
 #! / 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, username, password, upload_file): print "Connecting to server:% s" % server ftp = ftplib.FTP (server) tisk "Přihlášení jako: uživatel =% s"% uživatelské jméno ftp.login (uživatelské jméno, heslo) ext = os.path.splitext (soubor_souboru) [1] pokud je ext v (". txt "," .htm "," .html "): ftp.storlines (" STOR " + upload_file, open (upload_file)) else: ftp.storbinary (" STOR " + upload_file, open (upload_file," rb "), 1024) vytisknout "Nahraný soubor:% s"% upload_file, pokud __name__ == '__main__': parser = argparse.ArgumentParser (description = 'Příklad nahrávání souborů FTP') parser.add_argument ('- server', action = "store" , dest = "server", výchozí = SERVER_FTP_LOCAL) parser.add_argument ('- file', action = "store", dest = "file_upload", default = FILE_TO_UPLOAD) parser.add_argument ('- uživatel', action = "store" , dest = "n jméno_uživatele ", výchozí = getpass.getuser ()) application_parameters = server parser.parse_args (), soubor_souboru_souborů, jméno_uživatele = název_aplikace_parameters.server, název_souboru_souborů_soubor_souborů_soubor ,_aplikace_parameters.název_uživatele heslo: heslo: getpass.getpass heslo (prompt ="): getpass.getpass (prompt = ") upload_ftp (server, uživatelské jméno, heslo, soubor_souboru) 

V tomto případě kromě importu knihovny ftplib, importujeme také knihovny vy abychom měli přístup k příkazům operačního systému, používáme dále argparse Y getpass aby bylo možné zpracovat použití parametrů zadaných uživatelem a tím učinit náš program dynamičtějším.
Poté definujeme několik konstant, pomocí kterých se chystáme založit server, a ukázkový soubor, který nahrajeme do složky definované naším uživatelem FTP. Dalším krokem je otevření připojení FTPV tomto případě však použijeme uživatelské jméno a heslo, protože teoreticky přistupujeme k serveru s neanonymní autentizací, je to většinou z bezpečnostních důvodů a také proto, abychom ukázali, že náš příklad funguje v jiných případech.
Pokračujeme ve vyhodnocování přípony našeho souboru, uvidíme, zda se jedná o textový soubor, který používáme storlines (), s nimiž neovlivníme jejich obsah, v případě, že se jedná o jiné rozšíření odlišné od definovaných, použijeme metodu bouřlivý () umět předat soubor v jeho původní podobě s jeho binárním obsahem, a tím jej nepoškodit a umožnit jeho další používání.
Nakonec použijeme argparse () abychom mohli používat argumenty, které může uživatel zavést, používat náš program, s výjimkou toho, že pokud neumisťuje hodnoty, budou brány globální hodnoty definované v našem programu. Spustíme náš program a pokud vše proběhne správně, uvidíme v naší konzole následující výstup:

ZVĚTŠIT

Poznamenáváme, že v tomto případě je uživatelský parametr jediným, který používáme, protože na našem serveru máme uživatele s názvem testovací python, poté uvedeme heslo přiřazené uvedenému uživateli a odeslání souboru proběhne efektivně.
S tímto dokončujeme tento tutoriál, naučili jsme se, jak vytvořit připojení FTP z programu vytvořeného v KrajtaZde je důležité poznamenat si, jak s metodami, které pocházejí ze standardní knihovny Krajta podařilo se nám provést funkce, které by nám jinak zabraly dlouhou dobu, kromě velkého množství kódu, který by bylo nutné generovat. Doporučujeme pokračovat ve vyšetřování oficiální dokumentace knihkupectví ftplib, tímto způsobem výrazně zvýšíme své dovednosti ve světě Krajta, čímž se otevírají dveře k větší efektivitě vývojářů v tomto vysoce konkurenčním technologickém světě.

Vám pomůže rozvoji místa, sdílet stránku s přáteli

wave wave wave wave wave