Mengunduh dan memproses file raster dengan Python? [Tutup]

11

Saya cukup baru untuk python dan mencari panduan untuk pertanyaan yang mungkin terdengar sepele bagi banyak orang.

Apakah ada cara untuk menggunakan 'wget' dalam skrip python untuk mengunduh file raster dari server dan memprosesnya dalam skrip yang sama?

Saya menjadi
sumber

Jawaban:

14

Python memiliki urllib2 built-in, yang membuka objek seperti file-pointer dari sumber daya 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)

Anda kemudian dapat mentransfer dan menulis byte secara lokal (mis. Unduh):

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

Sekarang Anda dapat melakukan apa pun yang Anda inginkan dengan file tersebut.

Mike T
sumber
1
+1 Mungkin tampak sedikit lebih rumit untuk melakukannya dengan cara ini tetapi akan lebih portabel dan lebih mudah untuk di-debug karena Anda tidak memiliki dependensi eksternal.
Sean
5

Beberapa cara untuk mencapai ini. Anda dapat menggunakan modul subproses untuk memanggil wget - lihat http://docs.python.org/library/subprocess.html

import subprocess

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

Atau Anda dapat menggunakan python untuk mengunduh file secara langsung menggunakan modul urllib (atau urllib2) - http://docs.python.org/library/urllib.html . Ada contoh dalam dokumentasi.

pengguna2856
sumber