Soy bastante nuevo en Python y busco orientación para una pregunta que puede parecer trivial para muchos.
¿Hay alguna manera de usar 'wget' en un script de Python para descargar archivos ráster de un servidor y procesarlos en el mismo script?
Python tiene urllib2 incorporado, que abre un objeto tipo puntero de archivo desde un recurso IP (HTTP, HTTPS, FTP).
import urllib2, os
# See http://data.vancouver.ca/datacatalogue/2009facetsGridSID.htm
rast_url = 'ftp://webftp.vancouver.ca/opendata/2009sid/J01.zip'
infp = urllib2.urlopen(rast_url)
Luego puede transferir y escribir los bytes localmente (es decir, descargarlo):
# Open a new file for writing, same filename as source
rast_fname = os.path.basename(rast_url)
outfp = open(rast_fname, 'wb')
# Transfer data .. this can take a while ...
outfp.write(infp.read())
outfp.close()
print('Your file is at ' + os.path.join(os.getcwd(), rast_fname))
Ahora puedes hacer lo que quieras con el archivo.
Un par de maneras de lograr esto. Puede usar el módulo de subproceso para llamar a wget; consulte http://docs.python.org/library/subprocess.html
import subprocess
retcode = subprocess.call(["wget", args])
O puede usar python para descargar el archivo directamente usando el módulo urllib (o urllib2): http://docs.python.org/library/urllib.html . Hay ejemplos en la documentación.
fuente
En esta respuesta anterior hay un método que usa una llamada a os.system.
fuente