我通过Python创建的.tar.gz文件包含一个“ _”根目录文件夹,我需要将其删除。
这是我正在使用的.tar.gz函数:
def make_tarfile(output_filename, source_dir):
with tarfile.open(output_filename, "w:gz") as tar:
tar.add(source_dir, arcname='')
我使用以下命令创建.tar.gz: make_tarfile('ARCHIVE.tar.gz','C:\ FolderA')
As you can see, there is a "_" folder added to the .tar.gz. Any suggestions on how I remove it?有趣的是,当我提取.tar.gz时,“ _”文件夹没有出现。从这个意义上讲,这很好。但这将是许多用户使用的.tar.gz,所以我希望它不包含这样的怪癖。
答案 0 :(得分:0)
在7z界面中看到的是..
条目,它添加到每个目录中,以便您可以通过单击它向上导航。它在tar存档中不存在。
请考虑以下内容:
def make_tarfile(output_filename, source_dir):
with tarfile.open(output_filename, "w:gz") as tar:
for name in os.listdir(source_dir):
tar.add(os.path.join(source_dir, name), arcname=name)
当称为make_tarfile('ARCHIVE.tar.gz', 'FolderA')
时,其中FolderA
是:
FolderA/
|-- FolderB
| `-- example
`-- example
生成包含以下内容的归档文件
:example
FolderB/
FolderB/example
现在,我不喜欢这样,因为我更喜欢将tar文件提取到顶级目录中。它们是使用tar -czf ARCHIVE.tar.gz FolderA/
创建的,并具有以下条目:
FolderA/
FolderA/example
FolderA/FolderB/
FolderA/FolderB/example
答案 1 :(得分:0)
万一遇到这种情况,请使用7Zip CLI对所需文件夹的所有内容进行通配符复制(将省略父文件夹)。像这样:
subprocess.call(['C:\Program Files\\7-Zip\\7z.exe', 'a', '-ttar', 'C:\ARCHIVE.tar', 'C:\FolderA\*'])
subprocess.call(['C:\Program Files\\7-Zip\\7z.exe', 'a', '-tgzip', 'C:\ARCHIVE.tar.gz', 'C:\ARCHIVE.tar'])
存档中也不会有“ _”文件夹,它会很干净:)