Python与urllib
我想从一个ftp网站下载一个压缩文件("tl_2008_01001_edges.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网站的列表呢?
谢谢。
3 个回答
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())
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。
8
使用 urllib2.urlopen()
来获取压缩文件的数据 和 目录列表。
要处理压缩文件,可以用 zipfile
模块。你可以把这些文件写入磁盘上的一个文件,然后把这个文件传给 zipfile.ZipFile
的构造函数。获取数据很简单,只需要在通过 urllib2.urlopen()
返回的类文件对象上使用 read()
方法。
获取目录的方法:
>>> 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