Python-下载Zip文件并解压缩所有

Python-下载Zip文件并解压缩所有,python,Python,我有两个块,一个下载压缩文件,另一个提取所有文件。当我单独使用它们时,它可以工作,但当我将它们一起使用时,我会收到一个错误,即BadZipFile。下面是我的代码示例: from ftplib import FTP import zipfile f = open(r'C:\file.zip', 'wb') with FTP("ftp.website.com") as ftp: ftp.login(user='USER', passwd='PASSWORD') ftp.retr

我有两个块,一个下载压缩文件,另一个提取所有文件。当我单独使用它们时,它可以工作,但当我将它们一起使用时,我会收到一个错误,即BadZipFile。下面是我的代码示例:

from ftplib import FTP
import zipfile

f = open(r'C:\file.zip', 'wb')

with FTP("ftp.website.com") as ftp:
    ftp.login(user='USER', passwd='PASSWORD')
    ftp.retrbinary('RETR ' + 'file.zip', f.write, 1024)

with zipfile.ZipFile('file.zip', 'r') as z:
    z.extractall()

为什么不单独使用呢?我使用urllib从web服务器获取tar.gz/zip,然后提取tarfile/zipfile。在尝试解压/解压缩之前,请确保文件已完成下载。您应该为ftp、文件io/Unziping添加一些异常处理记住导入ftp错误,因为从ftplib导入ftp不会导入它们您是否尝试过不使用retrbinary中的第三个参数?因为跳过数据会很容易创建一个损坏的.zip文件。我在两者之间添加了f.close,并且成功了。您真的需要打开和关闭它吗?只需获取文件并将其解压缩即可。除非windows需要您这样做?我删除了retrbinary中的第三个参数,谢谢Laurent。