Descargue, verifique y extraiga archivos fácilmente
Si tiene conjuntos de datos u otros archivos que desea poner a disposición de sus usuarios y asegurarse de que siempre tengan las últimas versiones y de que se descarguen correctamente, fastdownload
puede ser útil.
Usando pipa:
pip install fastdownload
...o usando conda:
conda install -c fastai fastdownload
La situación en la que es posible que desee utilizar fastdownload
es cuando tiene una o más URL que apuntan a algunos archivos que desea que estén disponibles y desea asegurarse de que sus usuarios descarguen esos archivos correctamente, tengan la última versión y que sea lo más fácil posible. posible para que puedan acceder a la información contenida en esos archivos.
Su usuario simplemente llama a un método único, FastDownload.get
, pasa la URL requerida y la URL se descargará y extraerá a los directorios que elija. Se devuelve la ruta al archivo extraído. Si esa URL ya se ha descargado, el archivo o el contenido almacenado en caché se utilizará automáticamente. Sin embargo, si ese tamaño o hash del archivo es diferente al que debería ser, se informará al usuario y se descargará una nueva versión.
En el futuro, es posible que desees actualizar uno o más de tus archivos. Cuando lo haga, fastdownload
garantizará que sus usuarios tengan la última versión, comparando sus archivos descargados con el tamaño de archivo actualizado y la información hash.
Por ejemplo, fastai
utiliza fastdownload
para brindar acceso a conjuntos de datos para un aprendizaje profundo. Los usuarios fastai
pueden descargarlos y extraerlos con un solo comando, utilizando el valor de retorno para acceder a los archivos. Los archivos se colocan automáticamente en los subdirectorios apropiados de una carpeta .fastai
en el directorio principal del usuario. Si se actualiza un conjunto de datos, se informa a los usuarios la próxima vez que utilicen el conjunto de datos y se descarga y extrae automáticamente la última versión.
Cuando sus usuarios descarguen un archivo, fastdownload
lo guardará automáticamente en un directorio, comprobará si el tamaño y el hash coinciden y extraerá el contenido. El uso mínimo para descargar y extraer es:
desde fastdownload import FastDownloadd = FastDownload()ruta = d.get('https://...')
Después de esto, path
contendrá la ruta donde se encuentran los archivos extraídos. De forma predeterminada, los archivos se guardan en {base}/archive
y se extraen en {base}/data
. {base}
por defecto es ~/.fastdownload
. Si hay más de un archivo o carpeta en la raíz del archivo descargado, se crea una nueva carpeta en data
para el contenido.
En lugar de get
, utilice download
para descargar la URL sin extraerla, o extract
para extraer la URL sin descargarla (suponiendo que ya se haya descargado en el directorio archive
). Todos estos métodos aceptan un parámetro force
que descargará/extraerá el archivo incluso si ya está presente.
Puede cambiar cualquiera o todas las rutas base
, archive
y data
pasándolas a FastDownload
:
d = FastDownload(base='~/.mypath', archivo='descargado', datos='extraído')
Puede eliminar el archivo almacenado en caché y/o el contenido extraído con rm
:
d.rm('https://...')
fastdownload
agregará un archivo download_checks.py
a su módulo Python que contiene tamaños de archivo y hashes para sus archivos. El archivo se encuentra en el mismo directorio que el módulo que elija, por ejemplo:
d = Descarga Rápida(módulo=fastai.some_module)
Luego use update
para crear o actualizar el tamaño y el hash de una URL:
d.actualización('https://...')
Ahora encontrará que hay un archivo llamado download_checks.py
en el mismo directorio donde se encuentra fastai.some_module
, que contiene un dictado de Python con la URL, el tamaño y el hash de este archivo. Si ha descargado este archivo anteriormente en su ruta archive
, se utilizará en lugar de descargar una nueva copia. Utilice get(force=True)
primero para descargar una nueva copia, incluso si la tiene en su archivo.
Si hay un archivo llamado config.ini
en su directorio base
, entonces archive
de claves y data
se utilizarán como valores predeterminados para FastDownload
. El archivo debe estar en formato configparser. Aquí hay un ejemplo config.ini
:
[DEFAULT] archive = downloaded data = extracted
Si no hay ningún archivo ini presente, se creará uno automáticamente utilizando los detalles que pase a FastDownload
.
Puede agregar cualquier par clave/valor adicional al archivo de configuración que desee. Cuando llama a FastDownload.get
pase extract_key
para usar una clave distinta de data
para elegir una ubicación para extraer.