Jupyter notebook 如何从Jupyter笔记本下载所有文件和文件夹层次结构?

Jupyter notebook 如何从Jupyter笔记本下载所有文件和文件夹层次结构?,jupyter-notebook,jupyter,file-management,jupyterhub,Jupyter Notebook,Jupyter,File Management,Jupyterhub,如果我想从Jupyter笔记本下载所有文件和文件夹层次结构,如图所示,您知道除了转到每个文件夹中的每个文件打开文件并单击下载数百次之外,是否还有其他方法可以通过简单的单击来完成 注意:这个Jupyter笔记本是由在线课程老师创建的,因此它不是从我的本地Acaconda应用程序打开的,而是从在线课程网页打开的。下载是为了将来需要时刷新内存 import os import tarfile def recursive_files(dir_name='.', ignore=None): f

如果我想从Jupyter笔记本下载所有文件和文件夹层次结构,如图所示,您知道除了转到每个文件夹中的每个文件打开文件并单击下载数百次之外,是否还有其他方法可以通过简单的单击来完成

注意:这个Jupyter笔记本是由在线课程老师创建的,因此它不是从我的本地Acaconda应用程序打开的,而是从在线课程网页打开的。下载是为了将来需要时刷新内存

import os
import tarfile

def recursive_files(dir_name='.', ignore=None):
    for dir_name,subdirs,files in os.walk(dir_name):
        if ignore and os.path.basename(dir_name) in ignore: 
            continue

        for file_name in files:
            if ignore and file_name in ignore:
                continue

            yield os.path.join(dir_name, file_name)

def make_tar_file(dir_name='.', tar_file_name='tarfile.tar', ignore=None):
    tar = tarfile.open(tar_file_name, 'w')

    for file_name in recursive_files(dir_name, ignore):
        tar.add(file_name)

    tar.close()


dir_name = '.'
tar_file_name = 'archive.tar'
ignore = {'.ipynb_checkpoints', '__pycache__', tar_file_name}
make_tar_file(dir_name, tar_file_name, ignore)
要使用它,只需在根文件夹中创建一个新的.ipynb笔记本,即您要下载的笔记本。然后将上面的代码复制粘贴到第一个单元格中并运行它


完成后-您将看到在同一文件夹中创建的tar文件,其中包含所有文件和子文件夹。

上面发布的答案大部分有效,但其复制链接,而不是链接指向的文件。如果将dereference=True作为参数添加到tarfile.open,您将获得文件本身

    tar = tarfile.open(tar_file_name, 'w', dereference=True)

+1如果要确保符号链接已解析,请使用:
yield os.path.realpath(os.path.join(dir\u name,file\u name))
而不是简单地:
os.path.join(dir\u name,file\u name)