根目录和基本目录有什么区别?

What is difference between root and base directory?

我正在尝试使用 shutils.py , make_archive 函数。
这里:https://docs.python.org/2/library/shutil.html#archiving-operations
但我无法理解 root_dir 和 base_dir 之间的区别。
这是使用 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)

这将创建一个名为 Backup.tar.gz 的存档,其中包含一个 .里面的目录。 我不想要 .目录,但整个内容都在存档中。

root_dir 指的是输出文件的基目录,或者你的工作脚本的工作目录。

base_dir指的是你要打包的内容。

例如,如果您的目录树如下:

/home/apast/git/someproject

而你想为someproject文件夹构建一个包,你可以设置:

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

如果您的树的内容如下所示,例如: /home/apast/git/someproject/test.py /home/apast/git/someproject/model.py

您的包裹内容将采用以下结构:

someproject/test.py someproject/model.py

您的包文件将存储在:

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

如文档所示,默认情况下,root_dir 和 base_dir 会针对您当前的工作目录(cwd 或 curdir)进行初始化。但是,您可以以更灵活的方式使用它。

如果您阅读文档,它会有点混乱,但如果您直观地看到它,它会有很大帮助。

root_dir 是您要存储文件的目录。

如果我在 C:\Users\Elipzer\Desktop\MyFolder\ 中存储文件,那将是我的 root_dir

base_dir 是添加到 root_dir 上的部分,所以如果我将它存储在 ...\MyFolder\MySubFolder\ 中的 MyFolder 下,我会把它作为 base_dir.

在许多情况下,不需要使用这些,因为您只需将默认目录更改为要在其中存储文件的目录,make_archive 函数将只使用默认目录作为root_dirbase_dir.

让我们考虑以下目录结构:

/home/apast/git/web/tornado.py
/home/apast/git/web/setup.py

/home/apast/git/core/service.py

/home/apast/git/mobile/gui.py
/home/apast/git/mobile/restfulapi.py

我们将尝试使用两个片段来阐明示例: 1.定义base_dir 2.没有定义base_dir

  1. 定义 base_dir,我们指定将包含在文件中的目录:

    from shutil import make_archive
    root_dir = "/home/apast/git/"
    
    make_archive(base_name="/tmp/outputfile",
                 format="gztar",
                 root_dir=root_dir,
                 base_dir="web")
    

    此代码将生成一个名为 /tmp/outputfile.tar.gz 的文件,其结构如下:

    web/tornado.py
    web/setup.py
    
  2. 运行 没有 base_dir,如下所示:

    from shutil import make_archive
    
    root_dir = "/home/apast/git/"
    
    make_archive(base_name="/tmp/outputfile",
                 format="gztar",
                 root_dir=root_dir)
    

    它将生成一个包含以下内容的文件:

    web/tornado.py
    web/setup.py
    core/service.py
    mobile/gui.py
    mobile/restfulapi.py
    

要定义特定的文件夹,可能需要使用其他技术,例如直接 gzip lib。

cd 在 root_dir... 和 tar [=13th=]... 文档让我很困惑,阅读代码,这会让你清楚。