web-dev-qa-db-ja.com

Jupyter Notebookからすべてのファイルとフォルダー階層をダウンロードする方法

図に示すようにJupyter Notebookからすべてのファイルとフォルダー階層をダウンロードする場合、すべてのフォルダーのすべての単一ファイルに移動してファイルを開いてクリックする以外に、単純なクリックでそれを行う方法があるかどうかを知っていますか何百回もダウンロードしますか?

enter image description here

注:このJupyter Notebookはオンラインコースの教師によって作成されているため、ローカルのAcacondaアプリからではなく、オンラインコースのWebページから開きます。ダウンロードは、必要に応じて将来のメモリを更新するためのものです。

10
Jason
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ファイルが同じフォルダーに作成されます。

18
Jason

上記の回答はほとんど動作しますが、リンクが指すファイルの代わりにリンクをコピーします。 tarfile.openの引数としてdereference = Trueを追加すると、ファイル自体が取得されます。

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