Как загрузить все файлы и иерархию папок из Jupyter Notebook?

Если я хочу загрузить все файлы и иерархию папок из Jupyter Notebook, как показано на рисунке, вы знаете, если это все равно сделать, просто щелкнув, кроме как перейти к каждому файлу в каждой папке, чтобы открыть файл и щелкнуть скачать сотни раз?

введите описание изображения здесь

Примечание. Этот Jupyter Notebook создан учителем онлайн-курса, поэтому он не открывается из моего локального приложения Acaconda, кроме веб-страницы онлайн-курса. Загрузка - для обновления памяти в будущем, когда это необходимо.

jupyter-notebook,jupyter,file-management,jupyterhub,

6

Ответов: 2


7 принят
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, созданный в той же папке, которая содержит все файлы и подпапки.


0

Вышеупомянутый ответ в основном работает, но его копирующие ссылки вместо файлов, на которые указывают ссылки. Если вы добавите dereference = True в качестве аргумента tarfile.open, вы сами получите файлы.

    tar = tarfile.open(tar_file_name, 'w', dereference=True)
jupyter-ноутбук, jupyter, файл-менеджмент, jupyterhub,
Похожие вопросы
Яндекс.Метрика