ZIP (.zip)
背景
-
- 注册的 MIME 类型:application/zip
- 流行的数据压缩和存档格式.
- 用于减少存储空间和传递时间.
- 二进制格式.
- 可以包含多个文件.
- 支持各种压缩方法.
- 于 1989 年由 Phil Katz 出版.
Import 与 Export
- 当从一个包含被支持的多文件的 ZIP 文档导入时,将对该格式使用转换器.
- Import["file.zip"] 返回形式为{"fn1", "fn2",…} 的表达式,给出 "file.zip" 中所有文件的完整路径规范.
- Import["file.zip",elem] 从 ZIP 文件中导入指定的参数.
- Import["file.zip","fn"] 从文档中提取 "fn" 并导入.
- Import["file.zip",{elem,suba,subb,…}] 导入一个子参数.
- Import["file.zip",{{elem1,elem2,…}}] 导入多个参数.
- Import["file","ZIP"] 或 Import["file",{"ZIP",elem,…}] 以一个 ZIP 文档导入任何文件.
- Export["file.zip",expr,elem] 通过把 expr 作为指定参数 elem 创建一个 ZIP 文档.
- Export["file.zip",{expr1,expr2,…},{{elem1,elem2,…}}] 把每一个 expri 指定为相应的 elemi.
- Export["file.zip","fn"->expr] 把 expr 导出到一个文件并压缩为 ZIP 文档,从 "fn" 的文件扩展名中推断文件格式.
- Export["file.zip","fn1"->expr1,"fn2"->expr2,…] 把多个表达式导出为一个 ZIP 文件文档.
- 请到以下参考页面了解完整的基本信息:
-
Import, Export 从文件导入或导出到文件 CloudImport, CloudExport 从云对象导入或导出到云对象 ImportString, ExportString 从字符串导入或导出到字符串 ImportByteArray, ExportByteArray 从字节数组导入或导出到字节数组
参数
- Import 的通用参数:
-
"Elements" 该文件可用的参数和选项列表 "Summary" 文件摘要 "Rules" 所有可用参数的规则列表 - 以下可用于 ZIP 文档选择或指定单个文件:
-
"FileNames" 文件名称列表表示一个 ZIP 文档的内容 "filename" 单个文件 "filename","format" 按指定格式获取的单个文件 "filename","format",elem 指定文件中的参数 elem - 对于 ZIP 格式,Import 默认使用 "FileNames" 参数.
- Import["file.zip","fn"] 提取并导入文件 "fn".
- 文件名称可以包括相对或绝对目录规范以及由 StringMatchQ 支持的缩略的字符串模式.
- Import["file.zip","*"] 导入整个文档.
- Import["file.zip","dir/*.jpg"] 从 dir 子目录中导入所有 JPEG 文件.
- Export["file.zip","file1.gif"->expr1,"file2.txt"->expr2] 创建一个包含 GIF 和 Text 文件的 ZIP 文档.
- Export["file",{expr1,expr2},{"ZIP",{{"file1","GIF"},{"file2","Text"}}}] 等同于上面的表达式.
选项
- 通用 Export 选项:
-
CompressionLevel Automatic 以 0 到 1 之间的数字表示 ZIP 的压缩强度 - CompressionLevel->1 设定对应于最强的可用压缩,从而使文件最小.
范例
打开所有单元 关闭所有单元基本范例 (1)
Export["test.zip", <|"a.gif" -> \!\(\*GraphicsBox[«3»]\), "b.txt" -> "earth seen from space"|>, "Rules" ];Import["test.zip"]Import["test.zip", "*"]Import["test.zip", "a.gif"]Import["test.zip", "*.txt"]范围 (1)
Export["test.zip", <|"a.gif" -> \!\(\*GraphicsBox[«3»]\), "b.fa" -> {"TTTCG", "GATAG"}, "c.col" -> {{0, 1, 1, 1}, {1, 0, 1, 1}, {1, 1, 0, 1}, {1, 1, 1, 0}}|>, "Rules" ];Import["test.zip", "Elements"]Import["test.zip", {"a.gif", "Elements"}]Import["test.zip", {"a.gif", {"ColorSpace", "Image"}}]Import["test.zip", "*"]导入参数 (1)
导出选项 (1)
CompressionLevel (1)
data = <|"a.txt" -> ExampleData[{"Text", "DeclarationOfIndependence"}], "b.txt" -> ExampleData[{"Text", "AliceInWonderland"}]|>;ExportString[data, "ZIP"]//ByteCount该结果与 CompressionLevel1 相等:
ExportString[data, "ZIP", CompressionLevel -> 1]//ByteCountExportString[data, "ZIP", CompressionLevel -> 0]//ByteCount属性和关系 (2)
data = <|"a.txt" -> StringJoin[ConstantArray[ExampleData[{"Text", "DeclarationOfIndependence"}], 3]], "b.txt" -> StringJoin[ConstantArray[ExampleData[{"Text", "AliceInWonderland"}], 5]]|>;将 ZIP、TARGZ 和 TARBZ2 压缩与未压缩的大小进行对比:
formats = {"Text", "ZIP", {"GZIP", "TAR"}, {"BZIP2", "TAR"}, {"ZSTD", "TAR"}};
BarChart[ByteCount[ExportString[data, #]]& /@ formats, ...]对比 ZIP、TARGZ、TARBZ2 和 TARZST 的压缩速度:
formats = {"ZIP", {"GZIP", "TAR"}, {"BZIP2", "TAR"}, {"ZSTD", "TAR"}};
BarChart[Round[First[AbsoluteTiming[ExportString[data, #]]], .001]& /@ formats, ChartLabels -> Placed[{"ZIP", "TARGZ", "TARBZ2", "TARZST"}, Above], LabelingFunction -> Bottom, Ticks -> None]压缩量取决于要压缩的数据,例如,JPEG 图像已被压缩,ZIP 无法对其进行进一步压缩:
ByteCount[ExportString[\!\(\*GraphicsBox[«3»]\), "JPEG"]]ByteCount[ExportString[<|"a.jpeg" -> \!\(\*GraphicsBox[«4»]\)|>, "ZIP"]]历史
2007年引入 (6.0) | 在以下年份被更新:2017 (11.2) ▪ 2020 (12.1)