首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查Python FTP连接

检查Python FTP连接
EN

Stack Overflow用户
提问于 2013-03-02 11:53:25
回答 1查看 17.8K关注 0票数 11

我有一个FTP连接,我从其中下载了许多文件,并在两者之间处理它们。我希望能够检查我的FTP连接是否在两者之间超时。所以代码看起来像这样:

代码语言:javascript
复制
conn = FTP(host='blah')
conn.connect()
for item in list_of_items:
    myfile = open('filename', 'w')
    conn.retrbinary('stuff", myfile)
    ### do some parsing ###

我如何检查我的FTP连接,以防它在### do some parsing ###线路超时?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-02 12:03:15

发送NOOP命令。这只会检查连接是否仍在运行,如果您定期执行此操作,则可以使连接保持活动状态。

例如:

代码语言:javascript
复制
   conn.voidcmd("NOOP")

如果连接有问题,FTP对象将抛出异常。您可以从documentation中看到,如果出现错误,就会抛出异常:

socket.error和IOError:这些是由套接字连接引发的,并且很可能是您感兴趣的。

exception ftplib.error_reply:从服务器收到意外回复时引发的异常。

exception ftplib.error_temp:收到表示暂时错误的错误码(响应码,范围为400-499)时引发的异常。

exception ftplib.error_perm:收到永久错误的错误码(响应码在500-599之间)时引发的异常。

exception ftplib.error_proto:当从服务器收到的回复不符合文件传输协议的响应规范(即以1-5范围内的数字开头)时引发的异常。

因此,您可以使用try-catch block来检测错误并相应地处理它。

例如,此代码示例将捕获一个IOError,告诉您有关它的信息,然后重试该操作:

代码语言:javascript
复制
retry = True
while (retry):
    try:
        conn = FTP('blah')
        conn.connect()
        for item in list_of_items:
            myfile = open('filename', 'w')
            conn.retrbinary('stuff', myfile)   
            ### do some parsing ###

        retry = False

    except IOError as e:
        print "I/O error({0}): {1}".format(e.errno, e.strerror)
        print "Retrying..."
        retry = True
票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15170503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档