2016-11-04 37 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归档管理器可以处理这些和其他,这取决于安装哪些命令行工具。