Python に標準搭載されている zipfile モジュール を使用すると、ZIP ファイルや JAR ファイルの読み書きを手軽に行うことができます。
ZIP ファイル内のファイル一覧を取得する
下記のサンプルでは、指定した ZIP ファイル内のファイルリストとその(展開後の)サイズを出力します。
zipfile.ZipFile
コンストラクタで ZipFile
オブジェクトを生成し、infolist
メソッドで ZIP 内のファイル情報 (ZipInfo
) を取得できます。
ファイル名でソートして出力したい場合は、下記のようにいったんリストにしてソートしてしまえば OK です。
ZIP ファイル内のファイルを読み込む
ZIP ファイル内の個々のファイルの内容を読み込むには、ZipFile#read メソッド を使用します。
このメソッドは、ファイルの内容をバイトデータ (bytes
) として返します。
バイトデータをテキストデータに変換するには、bytes#decode
メソッドを使用します。
JAR ファイル内のクラス一覧を取得する
JAR ファイルもフォーマット上は ZIP ファイルと同じ構造なので、ZIP ファイルを扱うのと同様に処理することができます。
ここでは、JAR ファイル内の .class
ファイルのみを処理するために、ファイルの拡張子が .class
であるかを確認しながらループ処理しています。
ここでは、ファイル名から拡張子を抽出するために os.path.splitext
を使っていますが、もっと単純に str#endswith
などで代用してもよいかもしれません。