【问题标题】:How to catch FTP errors? e.g., socket.error: [Errno 10060]如何捕捉 FTP 错误?例如,socket.error: [Errno 10060]
【发布时间】:2025-11-24 20:20:02
【问题描述】:

我正在使用 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 模块时,我还应该捕获哪些其他常见错误?

感谢任何帮助或指点。

【问题讨论】:

    标签: python ftp ftplib


    【解决方案1】:
    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
    

    这将捕获所有套接字错误(无论它们的“errno”是什么——10000 及以上的那些都是 Windows 特定的,它们在 Unix 上非常不同)。

    有关可能引发的其他异常,请参阅the docs;它们都在 ftplib.all_errors 元组中(socket.error 和最后一个大人物 IOError 也是如此),因此您可以使用 except ftplib.all_errors, e: 轻松捕获它们。

    【讨论】:

      【解决方案2】:

      我遇到了类似的错误。我必须做的是在该行捕获 socket.error

      s.storbinary(stor, f)
      

      以及初始连接。

      【讨论】:

        最近更新 更多