Si je veux télécharger tous les fichiers et la hiérarchie des dossiers à partir de Jupyter Notebook comme indiqué dans l'image, savez-vous s'il y a de toute façon à le faire par un simple clic autre que d'aller à chaque fichier dans chaque dossier pour ouvrir le fichier et cliquez sur télécharger des centaines de fois?
Remarque: Ce bloc-notes Jupyter est créé par l'enseignant du cours en ligne, il n'est donc pas ouvert à partir de mon application Acaconda locale mais à la place de la page Web du cours en ligne. Le téléchargement sert à rafraîchir la mémoire à tout moment.
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)
Pour l'utiliser, créez simplement un nouveau bloc-notes .ipynb dans le dossier racine, celui que vous souhaitez télécharger. Copiez et collez ensuite le code ci-dessus dans la première cellule et exécutez-le.
Quand c'est fait - vous verrez un fichier tar créé dans le même dossier, qui contient tous les fichiers et sous-dossiers.
La réponse publiée ci-dessus fonctionne principalement, mais ses liens de copie au lieu des fichiers vers lesquels pointent les liens. Si vous ajoutez dereference = True comme argument à tarfile.open, vous obtiendrez les fichiers eux-mêmes.
tar = tarfile.open(tar_file_name, 'w', dereference=True)