根目录和基本目录有什么区别?
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_dir
和 base_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
定义 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
运行 没有 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=]...
文档让我很困惑,阅读代码,这会让你清楚。
我正在尝试使用 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_dir
和 base_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
定义 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
运行 没有 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=]... 文档让我很困惑,阅读代码,这会让你清楚。