การดาวน์โหลดและการประมวลผลไฟล์แรสเตอร์ใน Python? [ปิด]


11

ฉันค่อนข้างใหม่สำหรับงูใหญ่และค้นหาคำแนะนำสำหรับคำถามที่อาจฟังดูไม่สำคัญสำหรับหลาย ๆ คน

มีวิธีใช้ 'wget' ในสคริปต์ python เพื่อดาวน์โหลดไฟล์แรสเตอร์จากเซิร์ฟเวอร์และประมวลผลในสคริปต์เดียวกันหรือไม่

คำตอบ:


14

Python มีurllib2ในตัวซึ่งเปิดวัตถุคล้ายตัวชี้ไฟล์จากทรัพยากร 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)

จากนั้นคุณสามารถถ่ายโอนและเขียนไบต์ภายใน (เช่นดาวน์โหลด):

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

ตอนนี้คุณสามารถทำสิ่งที่คุณต้องการด้วยไฟล์


1
+1 ดูเหมือนว่าจะซับซ้อนกว่านี้เล็กน้อยในการทำเช่นนี้ แต่มันจะพกพาได้มากกว่าและง่ายต่อการดีบักเพราะคุณไม่มีการพึ่งพาจากภายนอก
ฌอน

5

สองสามวิธีในการทำสิ่งนี้ให้สำเร็จ คุณสามารถใช้โมดูลย่อยเพื่อเรียก wget ได้ - ดูhttp://docs.python.org/library/subprocess.html

import subprocess

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

หรือคุณสามารถใช้หลามเพื่อดาวน์โหลดไฟล์โดยตรงโดยใช้ urllib (หรือ urllib2) โมดูล - http://docs.python.org/library/urllib.html มีตัวอย่างในเอกสารประกอบ


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.