What is difference between root and base directory?

Heartagramir picture Heartagramir · Oct 25, 2015 · Viewed 7.4k times · Source

I am trying to use shutils.py , make_archive function.
here: https://docs.python.org/2/library/shutil.html#archiving-operations
but I can't understand the difference between root_dir and base_dir.
Here's a simple code using make_archive:

#!user/bin/python
from os import path
from os import curdir
from shutil import make_archive
# Setting current Directory
current = path.realpath(curdir)
# Now Compressing
make_archive("Backup", "gztar", current)

This will create an archive named Backup.tar.gz which contains a . Directory inside it. I don't want the . directory but the whole thing inside in the archive.

Answer

Andre Pastore picture Andre Pastore · Oct 25, 2015

root_dir refers to base directory of output file, or working directory for your working script.

base_dir refers to content you want pack.

By example, if you have a tree like:

/home/apast/git/someproject

And you want to make a pack for someproject folder, you can set:

root_dir="/home/apast/git"
base_dir="someproject"

If the contents of your tree is like following, by example: /home/apast/git/someproject/test.py /home/apast/git/someproject/model.py

The content of your package will acquire following structure:

someproject/test.py someproject/model.py

And your package file will be stored at:

/home/apast/git/<packfile-name>

Like doc shows, by default, root_dir and base_dir are initialized for your current working directory (cwd, or curdir). But, you can use it in a more flexible way.