Как загрузить все файлы и иерархию папок из Jupyter Notebook?
Если я хочу загрузить все файлы и иерархию папок из Jupyter Notebook, как показано на рисунке, вы знаете, есть ли в любом случае, чтобы сделать это простым щелчком мыши, кроме как перейти к каждому файлу в каждой папке, чтобы открыть файл и нажмите кнопку Загрузить сотни раз?
Примечание: этот блокнот Jupyter создан онлайн-преподавателем курса, поэтому он не открывается из моего локального приложения Acaconda, а на веб-странице онлайн-курса. Загрузка для будущего обновления памяти, когда это необходимо.
2 ответов
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.открыть вы получите сами файлы.
tar = tarfile.open(tar_file_name, 'w', dereference=True)