[python] ftplib

pavel.kosina geon na post.cz
Pondělí Červenec 11 18:41:11 CEST 2005


S ftplib se mi nikdy nic přenést nepodařilo. Asi to jde, ale je to dost low-level.

Existuje, podle autorů high-level, podle mne middle-level modul - ftputil, který to umí vcelku 
dobře, podle modelového příkladu

import ftputil

# download some files from the login directory
host = ftputil.FTPHost('ftp.domain.com', 'user', 'password')
names = host.listdir(host.curdir)
for name in names:
     if host.path.isfile(name):
         host.download(name, name, 'b')  # remote, local, binary mode

# make a new directory and copy a remote file into it
host.mkdir('newdir')
source = host.file('index.html', 'r')  # file-like object
target = host.file('newdir/index.html', 'w')  # file-like object
host.copyfileobj(source, target)  # similar to shutil.copyfileobj
source.close()
target.close()


Takže na přenos pár souborů to funguje vcelku dobře. Lepší než ukázkový příklad je pužívat funkci 
upload_if_newer(..) - nebo upload() - viz manuál.

Co se ale musí ošetřit ručně, jsou:
* různé vyjímky (hlavně: ftputil.ftp_error.TemporaryError: 421 Login Timeout (25 seconds): closing 
control connection. ).
* Pak taky transfer celých adresářů (tam je třeba dávat pozor na různost lomítek: \ ---> /) i cest 
(plné cesty na lokále, relativní na FTP).

Ale rozhodně to je lepší než ftplib, pokud detailně nerozumíš ftp protokolu.... :-)

geon


geon
Vyjímka je pravidlo. Rekurzivní.


Vita Titl napsal(a):
> Nevíte jak na FTP přes Python, umím se připojit ne server a zalogovat se. Ale nevím, jak pracovat se soubory na FTP-serveru, můžete mi poradit?
> 
> Díky Mustafa



Další informace o konferenci Python