2016-11-04 74 views
0

我想編輯由numpy savez函數生成的zip文件。例如,我們可以製作一個zip文件,如Linux命令編輯由numpy savez函數生成的zip文件

>>> import numpy as np 
>>> x = np.array([1,2,3]) 
>>> y = np.array([4,5,6]) 
>>> dat = {'/path/to/x': x, '/path/to/y': y} 
>>> f = open('foo', 'wb') 
>>> np.savez(f, **dat) 

此代碼創建一個名爲foo的zip文件。 (在ubuntu GUI上,它顯示爲Zip存檔類型)

然後,我想刪除zip文件中的文件y。 (不使用Python)

我試過一種方法,首先解壓縮文件並手動刪除文件並再次壓縮。我通過tar命令創建了一個zip文件,但它生成了gzip壓縮的tar歸檔文件。

編輯並生成numpy save_z生成的zip文件的正確方法是什麼?

+0

如果你使用'unzip',那麼你應該檢查'zip'命令。 – furas

回答

0

zip命令像這樣使用-d選項:

zip foo -d y 

這樣從zip文件foo刪除文件y

您可以使用unzip -l foo檢查存儲在zip文件中的文件,以檢查存儲在foo中的文件的完整路徑和名稱。

+0

嗨,阿爾瓦羅。謝謝。該命令適用於我,但我必須將'foo'重命名爲'foo.zip'。有沒有這個重命名工作的選項? – ywat

+0

'zip'基於舊的Windows代碼(7-Zip),因此對於文件擴展名可能比本機UNIX更嚴格。 – hpaulj

+0

擴展幫助中的任何線索? 'zip -h2'? – hpaulj

0

我試過這個檔案管理器;在我的情況下,Mate版本,Engrampa

我試圖從.npz文件中刪除文件時出現錯誤。但如果我將其重命名爲.zip,刪除工作正常。並且np.load處理了zip這個名字。

npz文件是p7zip Version 9.20;這是與'本地'unix不同的存檔格式,gzipped tar。現代Linux歸檔管理器可以處理這些和其他,這取決於安裝哪些命令行工具。