Python allows you to quickly create zip/tar archives.

Following command will zip entire directory

shutil.make_archive(output_filename, 'zip', dir_name)

Following command gives you control on the files you want to archive

ZipFile.write(filename)

Here are the steps to create Zip File in Python

Step 1) To create an archive file from Python, make sure you have your import statement correct and in order. Here the import statement for the archive is from shutil import make_archive

Python OS Module, Shell Script Commands

Code Explanation

  • Import make_archive class from module shutil
  • Use the split function to split out the directory and the file name from the path to the location of the text file (Girish)
  • Then we call the module "shutil.make_archive("Girish archive, "zip", root_dir)" to create archive file, which will be in zip format
  • After then we pass in the root directory of things we want to be zipped up. So everything in the directory will be zipped
  • When you run the code, you can see the archive zip file is created on the right side of the panel.

Step 2)

Once your archive file is made, you can right-click on the file and select the O.S, and it will show your archive files in it as shown below

Python OS Module, Shell Script Commands

Now your archive.zip file will appear on your O.S (Windows Explorer)

Python OS Module, Shell Script Commands

Step 3) When you double-click on the file, you will see the list all the files in there.

Python OS Module, Shell Script Commands

Step 4) In Python we can have more control over archive since we can define which specific file to include under archive. In our case, we will include two files under archive "Girish.txt" and "Girish.txt.bak".

Python OS Module, Shell Script Commands

Code Explanation

  • Import Zipfile class from zip file Python module. This module gives full control over creating zip files
  • We create a new Zipfile with name ( "testGirish.zip, "w")
  • Creating a new Zipfile class, requires to pass in permission because it's a file, so you need to write information into the file as newzip
  • We used variable "newzip" to refer to the zip file we created
  • Using the write function on the "newzip" variable, we add the files "Girish.txt" and "Girish.txt.bak" to the archive

When you execute the code you can see the file is created on the right side of the panel with name "Girish.zip"

Note: Here we don't give any command to "close" the file like "newzip.close" because we use "With" scope lock, so when program falls outside of this scope the file will be cleaned up and is closed automatically.

Step 5) When you -> right click on file (testGirish.zip) and -> select your O.S (Windows Explorer), it will show the archive files in the folder as shown below.

When you double click on file "testGirish.zip", it will open another window, and this will show the files included in it.

Here is the complete code

Python 2 Example


         import os
         import shutil
         from zipfile import ZipFile
         from os import path
         from shutil import make_archive
         
         def main():
         # Check if file exists
             if path.exists("Girish.txt"):
         # get the path to the file in the current directory
             src = path.realpath("Girish.txt");
         # rename the original file
             os.rename("career.Girish.txt","Girish.txt")
         # now put things into a ZIP archive
             root_dir,tail = path.split(src)
             shutil.make_archive("Girish archive", "zip", root_dir)
         # more fine-grained control over ZIP files
             with ZipFile("testGirish.zip","w") as newzip:
             newzip.write("Girish.txt")
                 newzip.write("Girish.txt.bak")
         if __name__== "__main__":
               main()

Python 3 Example

import os
         import shutil
         from zipfile import ZipFile
         from os import path
         from shutil import make_archive
         
             # Check if file exists
                if path.exists("Girish.txt"):
             # get the path to the file in the current directory
                 src = path.realpath("Girish.txt");
             # rename the original file
                 os.rename("career.Girish.txt","Girish.txt")
             # now put things into a ZIP archive
                 root_dir,tail = path.split(src)
                 shutil.make_archive("Girish archive","zip",root_dir)
             # more fine-grained control over ZIP files
                 with ZipFile("testGirish.zip", "w") as newzip:
                     newzip.write("Girish.txt")
                     newzip.write("Girish.txt.bak")

Summary

  • To zip entire directory use command "shutil.make_archive("name","zip", root_dir)
  • To select the files to zip use command "ZipFile.write(filename)"