首页 > 解决方案 > 创建没有重复根名称的 tar 存档

问题描述

我正在用Python 中的tarfile模块创建一个 tar 存档。没关系,但我得到了一个名为 archive.gz 的 gzip 文件,其中也包含一个名为archive.gz的存档。如何制作没有重复名称的存档?

这里的代码:

import tarfile
import os

src_archive = 'C:\\source_archive'
dest_archive = 'C:\\archive.tar.gz'


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))


if __name__ == "__main__":
    print('creating archive')
    make_tarfile(dest_archive,src_archive)

标签: python-3.x

解决方案


我有一个类似的问题,我所做的是使用 UUID 随机生成一个字符串并将其附加到文件的末尾(这需要一个唯一的名称)

您可以做的另一件事是使用数据库,并通过索引号附加名称。

Python 3.7.3 (default, Mar 27 2019, 09:23:15) 
[Clang 10.0.1 (clang-1001.0.46.3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import uuid
>>> src_archive = f'C:\\source_archive-{str(uuid.uuid4()).split("-")[0]}'
>>> print(src_archive)
C:\source_archive-674fce6b

推荐阅读