Vous téléchargez et traitez des fichiers raster en Python? [fermé]

11

Je suis assez nouveau sur python et cherche des conseils pour une question qui peut sembler banale pour beaucoup.

Existe-t-il un moyen d'utiliser 'wget' dans un script python pour télécharger des fichiers raster depuis un serveur et les traiter dans le même script?

Ibe
la source

Réponses:

14

Python a urllib2 intégré, qui ouvre un objet de type pointeur de fichier à partir d'une ressource 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)

Vous pouvez ensuite transférer et écrire les octets localement (c'est-à-dire les télécharger):

# 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))

Vous pouvez maintenant faire ce que vous voulez avec le fichier.

Mike T
la source
1
+1 Il peut sembler un peu plus compliqué de le faire de cette façon, mais il sera plus portable et plus facile à déboguer car vous n'avez pas de dépendances externes.
Sean
5

Quelques façons d'y parvenir. Vous pouvez utiliser le module de sous-processus pour appeler wget - voir http://docs.python.org/library/subprocess.html

import subprocess

retcode = subprocess.call(["wget", args])

Ou vous pouvez utiliser python pour télécharger le fichier directement en utilisant le module urllib (ou urllib2) - http://docs.python.org/library/urllib.html . Il y a des exemples dans la documentation.

user2856
la source