[英]zip downloaded csv file
我正在嘗試下載一個csv文件並在保存之前將其壓縮。 我正在使用的代碼是:
req = urllib2.Request(url)
fh = urllib2.urlopen(req)
with contextlib.closing(ZipFile("test.csv.zip", "w", zipfile.ZIP_STORED)) as f:
f.write(fh.read())
f.close()
這樣做是將csv文件的內容打印到stdout並創建一個空的zipfile。
什么可能是錯的想法?
謝謝,艾薩克
看一下ZipFile.write()
的文檔。 這是函數簽名:
ZipFile.write(filename[, arcname[, compress_type]])
第一個參數應該是要添加到zip存檔的文件的文件名,而不是文件的內容。 相反,您將下載資源的全部內容作為文件名傳遞,因為這可能是非法的(太長),您會看到文件內容作為引發的異常的錯誤消息的一部分被轉儲。
要修復此問題,您需要使用ZipFile.writestr()
:
req = urllib2.Request(url)
fh = urllib2.urlopen(req)
with ZipFile("test.csv.zip", "w", zipfile.ZIP_STORED) as f:
f.writestr('test.csv', fh.read())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.