如何捕获FTP错误?例如,socket.error: [Errno 10060]

3 投票
2 回答
3684 浏览
提问于 2025-04-15 22:39

我正在使用ftplib模块来上传文件:

    files = [ a.txt , b.txt , c.txt ]

    s = ftplib.FTP(ftp_server , ftp_user , ftp_pw) # Connect to FTP
    for i in range(len(files)):
            f = open(files[i], 'rb')
            stor = 'stor ' + files[i]
            s.storbinary(stor, f)
            f.close() # close file
    s.quit() # close ftp

我该如何捕捉到以下错误呢?

socket.error: [Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond

使用FTP模块时,还有哪些常见的错误是我应该注意捕捉的呢?

谢谢任何帮助或建议。

2 个回答

2

我遇到过类似的错误。我需要做的是在这一行捕捉到 socket.error

s.storbinary(stor, f)

还有在最开始连接的时候也要处理这个错误。

3
import socket

try:
    s = ftplib.FTP(ftp_server , ftp_user , ftp_pw) # Connect to FTP
except socket.error, e:
    print "do something with %s" % e

这段话的意思是,这个代码可以捕捉到所有的socket错误(不管它们的“错误号”是什么——错误号在10000以上的主要是Windows系统特有的,而在Unix系统上则会有很大的不同)。

你可以查看这个文档,里面有可能出现的其他异常;这些异常都在一个叫做ftplib.all_errors的元组里(包括socket.error和最后一个比较重要的IOError),这样你就可以方便地用except ftplib.all_errors, e:来捕捉它们。

撰写回答