Следующий код загружает 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
Когда я пытался открыть файл 'ipca_201807SerieHist.xls' (загруженный и извлеченный с помощью приведенного выше кода) в Libre Office, 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 написан на португальском языке.