簡體   English   中英

zip下載了csv文件

[英]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())

如果您打算只壓縮單個文件,則可能不需要使用zip存檔,最好使用gzipbzip2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM