Pythonでラスターファイルをダウンロードして処理しますか?[閉まっている]


11

私はpythonにはかなり慣れていないので、多くの人にとって些細な質問のガイダンスを求めています。

Pythonスクリプトで「wget」を使用してサーバーからラスターファイルをダウンロードし、同じスクリプトで処理する方法はありますか?

回答:


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

または、pythonを使用して、urllib(またはurllib2)モジュール(http://docs.python.org/library/urllib.html)を使用してファイルを直接ダウンロードできます。ドキュメントには例があります。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.