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

2024-04-20 11:43:47 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

^{pr2}$

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


Tags: 文件代码target管理器closemodemy二进制
1条回答
网友
1楼 · 发布于 2024-04-20 11:43:47

我想说你尝试使用上下文管理器没有什么错。在

我用你的确切代码(填写一个站点和文件名)从一个公共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()

相关问题 更多 >