Geo*_*lly 156
要为整个目录树构建.tar.gz
(aka .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))
Run Code Online (Sandbox Code Playgroud)
CNB*_*orn 84
import tarfile
tar = tarfile.open("sample.tar.gz", "w:gz")
for name in ["file1", "file2", "file3"]:
tar.add(name)
tar.close()
Run Code Online (Sandbox Code Playgroud)
如果要创建tar.bz2压缩文件,只需将文件扩展名替换为".tar.bz2",将"w:gz"替换为"w:bz2".
Ale*_*lli 30
你叫tarfile.open用mode='w:gz'
,意为"开放的gzip压缩的写作."
您可能希望结束文件名(name
参数open
).tar.gz
,但这不会影响压缩能力.
顺便说一句,你平时用的模式得到更好的压缩'w:bz2'
,就像tar
平时甚至可以更好地压缩bzip2
比它可以压缩gzip
.
小智 7
Shutil.make_archive对于文件和目录都非常方便(内容递归添加到存档中):
import shutil
compressed_file = shutil.make_archive(
base_name='archive', # archive file name w/o extension
format='gztar', # available formats: zip, gztar, bztar, xztar, tar
root_dir='path/to/dir' # directory to compress
)
Run Code Online (Sandbox Code Playgroud)
先前的答案建议使用tarfile
Python模块.tar.gz
在Python中创建文件。这显然是一个不错的Python风格的解决方案,但是它在归档速度方面存在严重缺陷。这个问题提到它tarfile
比tar
Linux中的实用程序慢大约两倍。根据我的经验,这一估计是非常正确的。
因此,为了加快归档速度,可以使用tar
using subprocess
模块命令:
subprocess.call(['tar', '-czf', output_filename, file_to_archive])
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
80190 次 |
最近记录: |