2017-08-14 77 views
0

目前我正在寫一個像這樣的文件:從一個字節串荏苒在存儲器中的文件

with open('derp.bin', 'wb') as f: 
    f.write(file_data) 

但是有時候這個文件是非常大的,我需要壓縮它,我想,以儘量減少數量寫入磁盤並在內存中執行此操作。我知道我可以使用BytesIOZipFile從數據創建一個zip文件。這是我到目前爲止有:

zipbuf = io.BytesIO(file_data) 
z = zipfile.ZipFile(zipbuf, 'w') 
z.close() 

with open('derp.zip', 'wb') as f: 
    shutil.copyfileobj(zipbuf, f) 

我怎樣才能讓這個當你解壓縮zip文件有原derp.bin

回答

1
z = zipfile.ZipFile('derp.bin','w') 
z.writestr('derp.zip',file_data,8) 
z.close() 
+0

在我的Python列表中的文件名需要反轉:'z = zipfile.ZipFile('derp.zip','w')''和'z.writestr('derp.bin',file_data,8)'而不是寫入的東西。 – dafnahaktana