[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