如果传输不成功,ftplib 中的 retrbinary() 和 storbinary() 是否会引发异常?

Does retrbinary() and storbinary() in ftplib raise exception if transfer not successful?

如果传输不成功,ftplib 中的 retrbinary()storbinary() 函数是否会引发异常(或者我是否需要明确检查这一点)?

例如。我目前有代码可以...

ftp = ftplib.FTP(<all the connection info>)
try:
    fd = open(MYFILE, 'rb')
    res = ftp.storbinary("filename.csv", fd)
    print(str(res))
    fd.close
except:
    print("Failed to upload file")

我注意到 1) 来自 storbinary 的 return 值的 type 只是一个 str 和 2) 它显示为 "266成功将文件上传到 ftp 位置后,传输完成。如果在上传过程中出现问题,代码的 except 部分是否会被触发 (即 storbinary 函数是否会抛出异常)或者我是否需要显式检查字符串文字 response 喜欢...

ftp = ftplib.FTP(<all the connection info>)
try:
    fd = open(MYFILE, 'rb')
    res = ftp.storbinary("filename.csv", fd)
    print(str(res))
    fd.close
    if str(res) is not "226 Transfer Complete":
        raise Exception
except:
    print("Failed to upload file")

……?还有另一种更传统的方法来捕捉这个吗? (我对 ftplibretrbinary 函数也有同样的问题)。

是的,如果他们从服务器收到错误响应或连接意外丢失,他们会抛出异常。

虽然请注意,使用 FTP 协议,在某些情况下,并不总是可以判断传输失败。