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,…}]は1.77要素をインポートする.
- 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]は"fn"のファイル拡張子からファイル形式を推測し,expr をファイルにエキスポートしてZIPアーカイブとして圧縮する.
- 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 - Importはデフォルトで"FileNames"要素をZIP形式に使用する.
- 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ファイルとテキストファイルを含むZIPアーカイブを作成する.
- Export["file",{expr1,expr2},{"ZIP",{{"file1","GIF"},{"file2","Text"}}}]も同じである.
オプション
- 一般的なExportオプション:
-
CompressionLevel Automatic 0から1までの数で与えられるZIPの圧縮強度 - 設定CompressionLevel->1は可能な範囲で強度の最も高い圧縮に相当し,結果のファイルサイズは可能な限り最も小さくなる.
例題
すべて開く すべて閉じる例 (1)
GIFファイルとテキストファイルを含むZIPアーカイブを作成する:
Export["test.zip", <|"a.gif" -> \!\(\*GraphicsBox[«3»]\), "b.txt" -> "earth seen from space"|>, "Rules" ];ZIPアーカイブをインポートすると,デフォルトではアーカイブ中のファイル名が与えられる:
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"]ZIPアーカイブ内のファイルの一つについて利用できる要素を抽出する:
Import["test.zip", {"a.gif", "Elements"}]アーカイブ内のファイルの一つから要素をいくつかインポートする:
Import["test.zip", {"a.gif", {"ColorSpace", "Image"}}]別々の形式の複数のファイルのデフォルト要素をインポートする:
Import["test.zip", "*"]Import要素 (1)
Exportオプション (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,TARZSTの圧縮を,圧縮していない場合のサイズと比較する:
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)