アーカイブを簡単にダウンロード、検証、抽出する
ユーザーが利用できるようにしたいデータセットやその他のアーカイブがあり、ユーザーが常に最新バージョンを保持し、正しくダウンロードされていることを確認したい場合は、 fastdownload
役に立ちます。
ピップの使用:
pip install fastdownload
...またはcondaを使用します:
conda install -c fastai fastdownload
fastdownload
使用する必要がある状況は、利用可能にしたいアーカイブを指す 1 つ以上の URL があり、ユーザーがそれらのアーカイブを正しくダウンロードし、最新バージョンを入手し、それが同じくらい簡単であることを確認したい場合です。それらのアーカイブ内の情報に可能な限りアクセスできるようにします。
ユーザーは単一のメソッドFastDownload.get
を呼び出して、必要な URL を渡すだけで、その URL がダウンロードされ、選択したディレクトリに抽出されます。抽出されたファイルへのパスが返されます。その URL がすでにダウンロードされている場合は、キャッシュされたアーカイブまたはコンテンツが自動的に使用されます。ただし、アーカイブのサイズまたはハッシュが本来のものと異なる場合は、ユーザーに通知され、新しいバージョンがダウンロードされます。
将来的には、1 つ以上のアーカイブを更新する必要があるかもしれません。これを行うと、 fastdownload
ダウンロードしたアーカイブを更新されたファイル サイズとハッシュ情報と照合してチェックすることで、ユーザーが最新バージョンを持っていることを確認します。
たとえば、 fastai
fastdownload
使用して、ディープ ラーニング用のデータセットへのアクセスを提供します。 fastai
ユーザーは、戻り値を使用してファイルにアクセスし、単一のコマンドでファイルをダウンロードして抽出できます。ファイルは、ユーザーのホームディレクトリ内の.fastai
フォルダーの適切なサブディレクトリに自動的に配置されます。データセットが更新されると、次回そのデータセットを使用するときにユーザーに通知され、最新バージョンが自動的にダウンロードされて抽出されます。
ユーザーがアーカイブをダウンロードすると、 fastdownload
自動的にアーカイブをディレクトリに保存し、サイズとハッシュが一致するかどうかを確認して、内容を抽出します。ダウンロードと解凍の最小限の使用法は次のとおりです。
from fastdownload import FastDownloadd = FastDownload()path = d.get('https://...')
この後、 path
抽出されたファイルが配置されているパスが含まれます。デフォルトでは、アーカイブは{base}/archive
に保存され、 {base}/data
に抽出されます。 {base}
デフォルトは~/.fastdownload
です。ダウンロードしたアーカイブのルートに複数のファイルまたはフォルダーがある場合は、コンテンツのdata
内に新しいフォルダーが作成されます。
get
の代わりに、 download
使用して URL を抽出せずにダウンロードするか、 extract
URL をダウンロードせずに抽出します (既にarchive
ディレクトリにダウンロードされていると仮定します)。これらのメソッドはすべて、アーカイブがすでに存在する場合でもアーカイブをダウンロード/抽出するforce
パラメータを受け入れます。
base
、 archive
、およびdata
パスの一部またはすべてを変更するには、これらのパスをFastDownload
に渡します。
d = FastDownload(base='~/.mypath'、archive='ダウンロード済み'、データ='抽出済み')
キャッシュされたアーカイブ ファイルや抽出されたコンテンツは、 rm
を使用して削除できます。
d.rm('https://...')
fastdownload
アーカイブのファイル サイズとハッシュを含むファイルdownload_checks.py
Python モジュールに追加します。ファイルは、選択したモジュールと同じディレクトリにあります。例:
d = FastDownload(module=fastai.some_module)
次に、 update
使用して URL のサイズとハッシュを作成または更新します。
d.update('https://...')
fastai.some_module
と同じディレクトリにdownload_checks.py
というファイルがあることがわかります。このファイルには、このファイルの URL、サイズ、ハッシュを含む Python 辞書が含まれています。以前にこのファイルをarchive
パスにダウンロードしたことがある場合は、新しいコピーをダウンロードする代わりに、そのファイルが使用されます。アーカイブに新しいコピーがある場合でも、最初にget(force=True)
を使用して新しいコピーをダウンロードします。
base
ディレクトリにconfig.ini
というファイルがある場合、キーarchive
とdata
FastDownload
のデフォルト値として使用されます。ファイルは configparser 形式である必要があります。 config.ini
サンプルを次に示します。
[DEFAULT] archive = downloaded data = extracted
ini ファイルが存在しない場合は、 FastDownload
に渡した詳細を使用して、ini ファイルが自動的に作成されます。
必要なキーと値のペアを構成ファイルに追加できます。 FastDownload.get
を呼び出すときに、 extract_key
渡して、抽出先の場所を選択するためにdata
以外のキーを使用します。