Laden Sie Archive einfach herunter, überprüfen und extrahieren Sie sie
Wenn Sie über Datensätze oder andere Archive verfügen, die Sie Ihren Benutzern zur Verfügung stellen möchten, und sicherstellen möchten, dass diese immer über die neuesten Versionen verfügen und korrekt heruntergeladen werden, kann fastdownload
hilfreich sein.
Pip verwenden:
pip install fastdownload
...oder mit conda:
conda install -c fastai fastdownload
In der Situation, in der Sie fastdownload
verwenden möchten, verfügen Sie über eine oder mehrere URLs, die auf einige Archive verweisen, die Sie verfügbar machen möchten, und Sie möchten sicherstellen, dass Ihre Benutzer diese Archive korrekt herunterladen, über die neueste Version verfügen und dass es genauso einfach ist ihnen den Zugriff auf die Informationen in diesen Archiven zu ermöglichen.
Ihr Benutzer ruft einfach eine einzelne Methode, FastDownload.get
, auf und übergibt die erforderliche URL. Die URL wird dann heruntergeladen und in die von Ihnen ausgewählten Verzeichnisse extrahiert. Der Pfad zur extrahierten Datei wird zurückgegeben. Wenn diese URL bereits heruntergeladen wurde, werden das zwischengespeicherte Archiv oder die Inhalte automatisch verwendet. Wenn jedoch die Größe oder der Hash des Archivs von der erwarteten Größe abweicht, wird der Benutzer darüber informiert und eine neue Version heruntergeladen.
In Zukunft möchten Sie möglicherweise eines oder mehrere Ihrer Archive aktualisieren. Wenn Sie dies tun, stellt fastdownload
sicher, dass Ihre Benutzer über die neueste Version verfügen, indem es ihre heruntergeladenen Archive mit Ihren aktualisierten Dateigrößen- und Hash-Informationen vergleicht.
fastai
verwendet beispielsweise fastdownload
um Zugriff auf Datensätze für Deep Learning bereitzustellen. fastai
-Benutzer können sie mit einem einzigen Befehl herunterladen und extrahieren und über den Rückgabewert auf die Dateien zugreifen. Die Dateien werden automatisch in den entsprechenden Unterverzeichnissen eines .fastai
Ordners im Homedir des Benutzers abgelegt. Wenn ein Datensatz aktualisiert wird, werden Benutzer bei der nächsten Verwendung des Datensatzes darüber informiert und die neueste Version wird automatisch heruntergeladen und für sie extrahiert.
Wenn Ihre Benutzer ein Archiv herunterladen, speichert fastdownload
es automatisch in einem Verzeichnis, prüft, ob Größe und Hash übereinstimmen, und extrahiert den Inhalt. Die minimale Nutzung zum Herunterladen und Extrahieren beträgt:
from fastdownload import FastDownloadd = FastDownload()path = d.get('https://...')
Danach enthält path
den Pfad, in dem sich die extrahierten Dateien befinden. Standardmäßig werden Archive in {base}/archive
gespeichert und nach {base}/data
extrahiert. {base}
ist standardmäßig ~/.fastdownload
. Wenn sich im Stammverzeichnis des heruntergeladenen Archivs mehr als eine Datei oder ein Ordner befindet, wird in data
ein neuer Ordner für den Inhalt erstellt.
get
anstelle von download
um die URL herunterzuladen, ohne sie zu extrahieren, oder extract
, um die URL zu extrahieren, ohne sie herunterzuladen (vorausgesetzt, sie wurde bereits in das archive
heruntergeladen). Alle diese Methoden akzeptieren einen force
-Parameter, der das Archiv herunterlädt/extrahiert, auch wenn es bereits vorhanden ist.
Sie können einige oder alle base
, archive
und data
ändern, indem Sie sie an FastDownload
übergeben:
d = FastDownload(base='~/.mypath', archive='downloaded', data='extracted')
Sie können die zwischengespeicherte Archivdatei und/oder den extrahierten Inhalt mit rm
entfernen:
d.rm('https://...')
fastdownload
fügt Ihrem Python-Modul eine Datei download_checks.py
hinzu, die Dateigrößen und Hashes für Ihre Archive enthält. Die Datei befindet sich im selben Verzeichnis wie ein von Ihnen ausgewähltes Modul, z. B.:
d = FastDownload(module=fastai.some_module)
Verwenden Sie dann update
um die Größe und den Hash für eine URL zu erstellen oder zu aktualisieren:
d.update('https://...')
Sie werden nun feststellen, dass es im selben Verzeichnis, in dem sich fastai.some_module
befindet, eine Datei namens download_checks.py
gibt, die ein Python-Dikt mit der URL, Größe und dem Hash für diese Datei enthält. Wenn Sie diese Datei zuvor in Ihren archive
heruntergeladen haben, wird sie verwendet, anstatt eine neue Kopie herunterzuladen. Verwenden Sie zuerst get(force=True)
um eine neue Kopie herunterzuladen, selbst wenn Sie diese in Ihrem Archiv haben.
Wenn sich in Ihrem base
eine Datei namens config.ini
befindet, werden die Schlüssel archive
und data
als Standardwerte für FastDownload
verwendet. Die Datei sollte im configparser-Format vorliegen. Hier ist ein Beispiel für config.ini
:
[DEFAULT] archive = downloaded data = extracted
Wenn keine INI-Datei vorhanden ist, wird anhand der Details, die Sie an FastDownload
übergeben, automatisch eine für Sie erstellt.
Sie können der Konfigurationsdatei beliebige zusätzliche Schlüssel/Wert-Paare hinzufügen. Wenn Sie FastDownload.get
aufrufen, übergeben Sie extract_key
, um einen anderen Schlüssel als data
für die Auswahl eines Speicherorts zum Extrahieren zu verwenden.