为什么ftp.retrbinary不能使用文件上下文管理器?

时间:2015-09-22 19:51:09

标签: python python-3.x ftp

我正在通过ftp下载二进制文件,它可以工作:

        with open(my_file, mode='wb') as target:
            ftp.retrbinary('RETR ' + my_file, target.write)

但是,当我尝试使用上下文管理器来改进我的代码时,它会创建一个零长度文件,并且无法下载内容:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.1.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

我尝试使用上下文管理器有什么问题?

1 个答案:

答案 0 :(得分:1)

我想说你尝试使用上下文管理器没什么问题。

我使用您的确切代码(填写网站和文件名)从公共ftp站点(下面)下载文件。试一试。

当您更改代码以使用上下文管理器时,您可能更改了其他内容(您尚未向我们展示)。

import ftplib

def main():

    ftp = ftplib.FTP("speedtest.tele2.net", user='anonymous', passwd='anonymous')
    my_file = "5MB.zip"

    with open(my_file, mode='wb') as target:
        ftp.retrbinary('RETR ' + my_file, target.write)

if __name__ == '__main__':
    main()