a question about ftplib
Gabriel G
gabrielg_laburando at yahoo.com.ar
Fri Sep 1 14:07:25 EDT 2006
At Friday 1/9/2006 06:32, alper soyler wrote:
>Thank you very much for your help. The program works however, after
>downloading 121 '.pep' files, it gave me time out error:
>
>Traceback (most recent call last):
> File "ftp1.0.py", line 18, in ?
> for filename in ftp.nlst():
> ...
> File "/usr/lib/python2.4/ftplib.py", line 324, in ntransfercmd
> conn.connect(sa)
> File "<string>", line 1, in connect
>socket.error: (110, 'Connection timed out')
>
>How can I continue from the last download or is there any way to
>arrange the time? Thank you very much.
You can change the default timeout for sockets with
socket.setdefaulttimeout(secs) (this is a module function; call it at
the beginning of your script).
To continue from the last download, you could skip downloading files
when they already exist on your disk: before opening it for write,
use os.path.exists(full_filename) to detect it, and skip the download part.
If you want to continue even after an exception happens, use the
try/except syntax.
I don't have your code at hand to show the details, but it was something like:
for directory in dirlist:
cwd(directory)
for filename in directory:
download file
You may want to change it to:
for directory in dirlist:
try:
cwd(directory)
for filename in directory:
if (filename already exists): continue
try:
download file
except: print '%s: %s' % sys.exc_info()[:2]
except: print '%s: %s' % sys.exc_info()[:2]
This way, if an error happens within downloading a file, goes on the
next; and if an error happens procesing a directory, goes on the next too.
As a general guide, bare except clauses (that is, without a matching
exception class) are not good, but for an utility script like yours I
think it's fine.
Gabriel Genellina
Softlab SRL
__________________________________________________
Preguntá. Respondé. Descubrí.
Todo lo que querías saber, y lo que ni imaginabas,
está en Yahoo! Respuestas (Beta).
¡Probalo ya!
http://www.yahoo.com.ar/respuestas
More information about the Python-list
mailing list