ファイル全体を解凍せずにLZMAファイル(.7zip)の内容を一覧表示することはできますか?また、LZMAファイルから1つのファイルを抽出できますか?
私の問題:5TBを超えるまで解凍する30GBの.7zファイルがあります。完全に解凍することなく、元の.7zファイルを操作したいと思います。
はい。XZUtilsから始めます。PerlとPythonのAPIがあります。
ヘッダーから必要なファイルを見つけることができます。各ファイルは個別に圧縮されるため、必要なファイルだけを抽出できます。
SourceforgeのLZMASDKファイルページからlzma922.tar.bz2をダウンロードし、ファイルを抽出してC / Util / 7z/7zMain.cを開きます。そこには、.7zアーカイブから特定のアーカイブファイルを抽出するためのルーチンがあります。すべてのエントリからすべてのデータを抽出する必要はありません。サンプルコードは、関心のあるものだけを抽出する方法を示しています。この同じコードには、すべての圧縮データを抽出せずにエントリを一覧表示するロジックがあります。
この問題は、7zip(https://www.7-zip.org/)をインストールし、パラメーターlを使用することで解決しました。例えば:
7z l file.7z
出力には、いくつかの説明情報と圧縮ファイル内のファイルのリストが含まれています。次に、サブプロセスライブラリを使用してPython内でこれを呼び出します。
import subprocess
output = subprocess.Popen(["7z","l", "file.7z"], stdout=subprocess.PIPE)
output = output.stdout.read().decode("utf-8")
プログラム7zがPATH変数でアクセス可能であることを確認することを忘れないでください。私はこれをWindowsで手動で行わなければなりませんでした。