python-3.x - 创建没有重复根名称的 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)
解决方案
我有一个类似的问题,我所做的是使用 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
推荐阅读
- grails - GORM createCriteria 和结果集不返回相同的结果
- c++ - 开罗:如何将文本剪辑成矩形?
- javascript - 从 Threejs 模型到用于纹理的 Fabricjs 画布的 Raycast 鼠标点击
- python - BeautifulSoup:将所有 p 元素合并为一个字符串?
- java - java调试器中的“找不到源”
- spring-boot - 通过 hawt.io 访问时,保护 jolokia 执行器端点无法正常工作
- python - 打印出类的值
- groovy - 我可以将一组类作为代表添加到 groovysh
- mysql - 同时处理数百个RDS mysql db
- .net - 垃圾回收期间未引用的延迟任务会被取消吗?