Pythonで圧縮した.tar.gzファイルを作成するにはどうすればよいですか?
ディレクトリツリー全体に対して.tar.gz
(別名.tgz
)を構築するには:
import tarfile
def make_tarfile(output_filename, source_dir):
with tarfile.open(output_filename, "w:gz") as tar:
tar.add(source_dir, arcname=os.path.basename(source_dir))
import tarfile
tar = tarfile.open("sample.tar.gz", "w:gz")
for name in ["file1", "file2", "file3"]:
tar.add(name)
tar.close()
Tar.bz2圧縮ファイルを作成する場合は、ファイル拡張子名を「.tar.bz2」に、「w:gz」を「w:bz2」に置き換えてください。
tarfile.open をmode='w:gz'
で呼び出します。これは、「gzip圧縮書き込み用に開く」ことを意味します。
ファイル名(name
へのopen
引数)を.tar.gz
で終了することもできますが、圧縮機能には影響しません。
ところで、通常、tar
のモードでは、gzip
で圧縮できるよりも、'w:bz2'
で圧縮できるのと同じように、bzip2
のモードでより良い圧縮が得られます。
以前の回答では、tarfile
pythonモジュールを使用して.tar.gz
Pythonのファイル。アーカイブの速度には重大な欠点がありますが、これは明らかに優れたpythonスタイルのソリューションです。 この質問 は、tarfile
がLinuxで直接コマンドを呼び出すよりも約2倍遅いことを述べています。私の経験によると、この推定はかなり正しいです。
したがって、アーカイブを高速化するには、subprocess
モジュールを使用して直接Linuxコマンドを使用できます。
subprocess.call(['tar', '-czf', output_filename, file_to_archive])