Pokračujeme v našem seriálu o tom, jak Pythonu umí pracovat s webem. Už jsme si ukazovali, jak webovou stránku stáhnout, jak ji vytvořit, a dneska si ukážeme, jak vytvořenou stránku nahrát na web. Jistě každý z vás má svého oblíbeného FTP managera, na kterého nedá dopustit, ale dokážete ho naprogramovat sami? A dovede to Python?
Upload na web
Pokračujeme v našem seriálu o tom, jak Pythonu umí pracovat s webem. Už jsme si ukazovali, jak webovou stránku stáhnout, jak ji vytvořit, a dneska si ukážeme, jak vytvořenou stránku nahrát na web. Jistě každý z vás má svého oblíbeného FTP managera, na kterého nedá dopustit, ale dokážete ho naprogramovat sami? A dovede to Python?
Programová manipulace s FTP je výhodná, když nahráváte na web stále stejné věci pořád a pořád dokola a chcete to nějak zautomatizovat. FTP manageři pod Windows málokdy podporují práci s příkazovou řádkou, vše je v oknech, a tudíž je malá možnost automatizace ve skriptech a dávkách.
Trocha více teorie
Klient posílá serveru FTP příkazy (FTP commands)
Server posílá FTP odpovědi (FTP replies):
Důležité FTP příkazy
USER <username> přihlášení, uživatelské jméno
PASS <password> přihlášení, heslo
CWD <pathname> změna pracovního adresáře
CDUP změna pracovního adresáře o úrověň výš
PWD zjištění pracovního adresáře
MKD <pathname> vytvoření adresáře
RMD <pathname> zrušení adresáře
LIST [<pathname>] download výpisu adresáře
NLST [<pathname>] download seznamu jmen souborů v adresáři
RETR <pathname> download souboru ze serveru ke klientovi
STOR <pathname> upload souboru od klienta do serveru
PASV přechod do pasivního módu
DELE <pathname> smazání souboru
QUIT ukončení komunikace
A jak to implementuje Python?
Python má ve standardní distribuci modul ftplib. Je to nízkoúrovňový modul, což značí, že přímo operuje nebo může operovat s FTP příkazy.
import ftplib
ftp = ftplib.FTP('')
ftp.connect('myweb.wz.cz')
ftp.login('user', 'password')
Po importu vytvoříme instanci FTP a všechny operace budeme nadále provádět "nad" ní, tedy s ní a za ní :-). V další řádce se připojíme ke svému FTP serveru - musíte si samozřejmě myweb.wz.cz změnit na svůj FTP server. No, a pak se zalogujeme pomocí ftp.login - také doporučuji změnit parametry na ty své. Upozorňuji, že na wz (webzdarma) je jméno shodné s ftp adresou - v tomto případě by na místě 'jméno' bylo 'myweb.wz.cz'.
ftp.cwd('kapka')
ftp.retrlines('LIST')
print dir(ftp)
Ukázka toho, jak změnit a vypsat adresář. A co vše, jaké všechny metody můžeme s FTP použít.
soubor=open("i:/myfile.py ", 'rb')
print ftp.storbinary( "STOR "+ "myfile.py", soubor)
No a pokusíme přenést jeden soubor na web. Nejdříve si ho musíme otevřít, a pak pomocí příkazu metody storbinary ho přesuneme na web. Všimněte si mezery za STOR - je to proto, že FTP příkaz musí znít: "STOR myfile.py" - a to je ta mezera mezi těmito dvěma slovy.
ftp.quit() #konec spojeni
Nezapomeneme po sobě uklidit...
Další metody
print ftp.sendcmd(PRIKAZ) - umožňuje poslat jakýkoliv příkaz na FTP server a vytisknout odpověď
ftp.mkd(jméno adresáře) - vytvoří adresář
Více najdete ve svém nebo v on-line manuálu k Pythonu.
Závěr
Vyzkoušení si pár těchto FTP příkazů může prohloubit a upevnit vaše znalosti o FTP. Přestože to třeba nikdy nebudete potřebovat, slovo FTP už pro vás nebude jen slovem, ale budete znát vnitřní smysl a budete vědět, že to není nic tajemného, co byste nedokázali. Mnoho zdaru!