【问题标题】:How to download all files and folder hierarchy from Jupyter Notebook?如何从 Jupyter Notebook 下载所有文件和文件夹层次结构?
【发布时间】:2018-06-15 19:20:02
【问题描述】:

如果我想从 Jupyter Notebook 下载所有文件和文件夹层次结构,如图所示,你知道是否有任何方法可以通过简单的单击来完成,而不是转到每个文件夹中的每个文件以打开文件并点击下载数百​​次?

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

【问题讨论】:

    标签: jupyter-notebook jupyter file-management jupyterhub


    【解决方案1】:

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

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

    【讨论】:

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

      【讨论】:

      • +1 如果要确保符号链接已解析,请使用:yield os.path.realpath(os.path.join(dir_name, file_name)) 而不是简单的:os.path.join(dir_name, file_name)
      猜你喜欢
      • 1970-01-01
      • 2018-09-15
      • 1970-01-01
      • 1970-01-01
      • 2021-10-27
      • 2020-05-17
      • 2021-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多