How do I compress a folder with the Python GZip module?
I'm creating Python software that compresses files/folders... How would I create a section of the code that asks for the user input of the folder location a开发者_开发技巧nd then compresses it. I currently have the code for a single file but not a folder full of files. Please explain in detail how to do this.
The code to compress a folder in to tar file is:
import tarfile
tar = tarfile.open("TarName.tar.gz", "w:gz")
tar.add("folder/location", arcname="TarName")
tar.close()
It works for me. Hope that works for you too.
I don't do UI, so you're on your own for getting the folder name from the user. Here's one way to make a gz-compressed tarfile. It does not recurse over subfolders, you'll need something like os.walk() for that.
# 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)
GZip doesn't do compression of folders/directories, only single files. Use the zipfile
module instead.
As larsmans says, gzip compression is not used for directories, only single files. The usual way of doing things with linux is to put the directory in a tarball first and then compress it.
精彩评论