У меня есть папка A, которая содержит FolderB и FileB. Как я могу создать архив tar.gz, который содержит ТОЛЬКО FolderB и FileB, удаляя родительский каталог FolderA? Я использую Python и запускаю этот код на компьютере с Windows.
Лучшее, что я нашел, было: Как создать полный сжатый tar-файл с использованием Python?
В самом голосуемом ответе люди обсуждают способы удаления родительского каталога, но ни один из них не работает для меня. Я пробовал arcname, os.walk и запускал команду tar через subprocess.call ().
Я близко подошел к os.walk, но в приведенном ниже коде он по-прежнему удаляет каталог "_"в с папками B и FileB. Итак, файловая структура имеет вид ARCHIVE.tar.gz> ARCHIVE.tar> каталог "_", FolderB, FileB.
def make_tarfile(output_filename, source_dir):
with tarfile.open(output_filename, "w:gz") as tar:
length = len(source_dir)
for root, dirs, files in os.walk(source_dir):
folder = root[length:] # path without "parent"
for file in files:
tar.add(os.path.join(root, folder), folder)
Я делаю архив, используя:
make_tarfile('ARCHIVE.tar.gz', 'C:\FolderA')
СледуетЯ продолжаю использовать os.walk, или есть другой способ решить эту проблему?
Обновление
Вот изображение, показывающее содержимое моего архива. Как выКак видите, в моем архиве есть папка "_", от которой я хочу избавиться - как ни странно, когда я распаковываю, только FolderA и FileB.html отображаются в виде архива. По сути, это правильное поведение, но если бы я мог сделать последний шаг по удалению папки «_» из архива, это было бы идеально. Я собираюсь задать обновленный вопрос, чтобы ограничить путаницу.