私はpython 3.4を使用しています
7z コンソール SFX ファイルを抽出するクローラーがあり、それらをプログラムで抽出したいと考えています。
現在、私はサブプロセス呼び出しでのみこれを行うことができました:
import subprocess
seven_zip = r"C:\Program Files\7-Zip\7z.exe"
tempfile = r"temp.exe" # SFX Archive
subprocess.call(seven_zip + ' x ' + tempfile + ' -aoa')
このスクリプトのユーザーは 7zip をインストールしていないか、別のディレクトリにインストールしている可能性があるため、これは問題です。さらに、サブプロセスを実行しても、通常の zFile 抽出を実行する場合のように、抽出されたアイテムに直接アクセスすることはできません。一時ディレクトリに抽出し、そのディレクトリ内のファイルを解析することでこれを回避できますが、それは面倒です。
Python で 7z コンソールの SFX ファイルを抽出する方法が必要だと考えています (おそらくpylzmaを使用したものでしょうか?) が、ここでこの件に関する質問を見つけることができないようです。
更新: py7zlib を使用した場合、まだ限られた成功しか収めていません。繰り返しますが、これは .7z アーカイブではなく、SFX (実行可能) アーカイブの抽出を目的としていることに注意してください。おそらく、そのようなファイル用の py7zlib のアプリケーションがありますが、例が見つかりません。