Arhn - архитектура программирования

Неожиданный файл с использованием Shutil.make_archive для сжатия файла

Я пытаюсь использовать Shutil.make_archive для архивирования файлов.

Когда я использую:

import shutil
shutil.make_archive('zip_file', 'zip', 'C:\\Users\\test')

Я получил zip_file в zip_file, а zip_file в zip_file кажется поврежденным файлом. Кто-нибудь знает, как с этим бороться?

Однако, когда я использую:

make_archive(
  'zipfile_name', 
  'zip',           # the archive format - or tar, bztar, gztar 
  root_dir=file_dir,   # root for archive - current working dir if None
  base_dir=file_dir)   # start archiving from here - cwd if None too

Он получает все правильно, кроме неправильного каталога папки. Например, если file_dir = 'C:\Users\aaa\Desktop\test\bbb', структура zip-файла будет следующей:

 Users  
         aaa
              Desktop
                     test
                         bbb

И я бы хотел, чтобы это было только bbb/.

есть идеи? Я действительно ценю твою помощь.


Ответы:


1

Я думаю, что решение состоит в том, чтобы создать zip-файл в другом каталоге. Оттуда что-то вроде

shutil.make_archive('zip_file', 'zip', 'C:\\Users\\test', "bbb")

должен предоставить вам архив каталога bbb.

03.05.2018
  • Конечно, это работает, но почему ему не удается создать zip-файл в этом конкретном каталоге? 03.05.2018
  • Я не уверен на 100%, но я подозреваю, что zip-файл создается как первый шаг в процессе, а затем заполняется обходом целевого каталога. Поскольку zip-файл находится в целевом каталоге, он видит свою незавершенную версию, которую включает. 03.05.2018
  • Это имеет смысл. И это объясняет, почему он не появился в другой папке. Большое спасибо. 03.05.2018
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..