以下代码下载一个 zip 文件,并存储其中包含的存档;它没有给出任何错误信息。
from io import BytesIO
import zipfile as zf
from urllib.request import urlopen
import pickle as pc # file manager
resp = urlopen('ftp://ftp.ibge.gov.br/Precos_Indices_de_Precos_ao_Consumidor/IPCA/Serie_Historica/ipca_SerieHist.zip')
zipfile = zf.ZipFile(BytesIO(resp.read()))
zipped_filenames = zipfile.namelist()
for filename in zipped_filenames:
print('Filename: ', filename)
xls_file = zipfile.read(filename)
with open(filename, 'wb') as output:
pc.dump(xls_file, output, pc.HIGHEST_PROTOCOL)
输出:
Filename: ipca_201807SerieHist.xls
当我尝试使用 Libre Office 打开文件“ipca_201807SerieHist.xls”(使用上述代码下载并提取)时,LO 无法识别该文件并尝试导入它。
如果我转到 URL:“ ftp://ftp.ibge.gov.br/Precos_Indices_de_Precos_ao_Consumidor/IPCA/Serie_Historica/ipca_SerieHist.zip ”,将“ipca_SerieHist.zip”文件保存在 HD 中,然后解压缩并打开“ ipca_201807SerieHist.xls 的文件,Libre Office 可以识别该文件。
两个文件“ipca_201807SerieHist.xls”的大小相似;下载的 62994 字节比 62976 字节稍大。如果我比较内容,除了一些孤立的字符外,它们似乎非常相似。
注意:“ipca_201807SerieHist.xls”是葡萄牙语。