如何从Jupyter Notebook下载所有文件和文件夹层次结构?

时间:2018-01-05 23:32:22

标签: jupyter-notebook jupyter file-management jupyterhub

如果我想从图片中所示的Jupyter Notebook下载所有文件和文件夹层次结构,你知道是否还有通过简单点击而不是去每个文件夹中的每个文件来打开文件和点击下载数百​​次?

enter image description here

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

2 个答案:

答案 0 :(得分:13)

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文件,其中包含所有文件和子文件夹。

答案 1 :(得分:0)

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

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