Как сжать папку с помощью модуля Python GZip? - PullRequest
6 голосов
/ 06 октября 2010

Я создаю программное обеспечение Python, которое сжимает файлы / папки ... Как бы я создал раздел кода, который запрашивает пользовательский ввод местоположения папки, а затем сжимает его. В настоящее время у меня есть код для одного файла, но не папка, полная файлов. Пожалуйста, объясните подробно, как это сделать.

Ответы [ 4 ]

15 голосов
/ 23 июля 2012

Код для сжатия папки в файл tar:

import tarfile

tar = tarfile.open("TarName.tar.gz", "w:gz")
tar.add("folder/location", arcname="TarName")
tar.close()

Это работает для меня.Надеюсь, что это работает для вас тоже.

8 голосов
/ 06 октября 2010

GZip не выполняет сжатие папок / каталогов, только отдельные файлы. Вместо этого используйте модуль zipfile.

6 голосов
/ 06 октября 2010

Я не работаю с пользовательским интерфейсом, так что вы сами можете получить имя папки от пользователя. Вот один из способов создать сжатый gz tarfile. Он не рекурсирует по подпапкам, для этого вам понадобится что-то вроде os.walk ().

# assume the path to the folder to compress is in 'folder_path'

import tarfile
import os

with tarfile.open( folder_path + ".tgz", "w:gz" ) as tar:
    for name in os.listdir( folder_path ):
        tar.add(name)
0 голосов
/ 06 октября 2010

Как говорит larsmans, сжатие gzip не используется для каталогов, только для отдельных файлов.Обычный способ работы с linux - сначала поместить каталог в тарбол, а затем сжать его.

...