Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I am fairly new to python and seek guidance for a question which might sound trivial to many. Is there a way to use 'wget' in a python script to download raster files from a server and process them in the same script?

share|improve this question

3 Answers 3

up vote 13 down vote accepted

Python has urllib2 built-in, which opens a file-pointer-like object from a IP resource (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)

You can then transfer and write the bytes locally (i.e., download it):

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

Now you can do whatever you want with the file.

share|improve this answer
1  
+1 It may seem slightly more complicated to do it this way but it will be more portable and be easier to debug because you don't have external dependencies. –  Sean Aug 19 '11 at 13:41

A couple of ways to accomplish this. You can use the subprocess module to call wget - see http://docs.python.org/library/subprocess.html

import subprocess

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

Or you can use python to download the file directly using the urllib (or urllib2) module - http://docs.python.org/library/urllib.html. There are examples in the documentation.

share|improve this answer

In this previous answer is a method using a call to os.system.

os.system('wget %s' % (fullurl))
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.