7

urllib を使用して ftp国勢調査サイトから zip ファイル ("tl_2008_01001_edges.zip") をダウンロードしようとしています。入手した zip ファイルの形式と保存方法を教えてください。

私は Python にかなり慣れていないため、urllib の仕組みがわかりません。

これは私の試みです:

import urllib, sys

zip_file = urllib.urlretrieve("ftp://ftp2.census.gov/geo/tiger/TIGER2008/01_ALABAMA/Autauga_County/", "tl_2008_01001_edges.zip")

ftp フォルダー (この場合は郡) のリストがわかっている場合、glob 関数を使用して ftpサイトのリストを調べることはできますか?

ありがとう。

4

3 に答える 3

8

urllib2.urlopen()zipファイルのデータディレクトリのリストに使用します。

モジュールでzipファイルを処理するにはzipfile、それらをディスクファイルに書き込んでから、zipfile.ZipFileコンストラクターに渡します。データの取得は、read()によって返されるファイルのようなオブジェクトを使用して簡単に行えますurllib2.urlopen()

ディレクトリの取得:

>>> files = urllib2.urlopen('ftp://ftp2.census.gov/geo/tiger/TIGER2008/01_ALABAMA/').read().splitlines()
>>> for l in files[:4]: print l
... 
drwxrwsr-x    2 0        4009         4096 Nov 26  2008 01001_Autauga_County
drwxrwsr-x    2 0        4009         4096 Nov 26  2008 01003_Baldwin_County
drwxrwsr-x    2 0        4009         4096 Nov 26  2008 01005_Barbour_County
drwxrwsr-x    2 0        4009         4096 Nov 26  2008 01007_Bibb_County
>>> 

または、ディレクトリ名の分割:

>>> for l in files[:4]: print l.split()[-1]
... 
01001_Autauga_County
01003_Baldwin_County
01005_Barbour_County
01007_Bibb_County
于 2010-02-18T16:04:55.060 に答える
5
import os,urllib2
out=os.path.join("/tmp","test.zip")
url="ftp://ftp2.census.gov/geo/tiger/TIGER2008/01_ALABAMA/01001_Autauga_County/tl_2008_01001_edges.zip"
page=urllib2.urlopen(url)
open(out,"wb").write(page.read())
于 2010-02-18T15:50:14.857 に答える
3

ドキュメントに従ってurlretrieveファイルをディスクに配置し、タプルを返します(filename, headers)。したがって、ファイルはurlretrieve戻ったときにすでに保存されています。

取得したZIPファイルは、標準ライブラリのzipfileモジュールで 開いて読み取ることができます。globzipファイル内では機能せず、通常のファイルシステムディレクトリでのみ機能します。

于 2010-02-18T15:37:37.173 に答える