Python和urllib

时间:2010-02-18 15:31:50

标签: python urllib2 urllib

我正在尝试使用urllib从ftp census网站下载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 site列表吗?

感谢。

3 个答案:

答案 0 :(得分:8)

使用urllib2.urlopen()获取zip文件数据目录列表。

要使用zipfile模块处理zip文件,您可以将它们写入磁盘文件,然后将其传递给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

答案 1 :(得分:4)

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

答案 2 :(得分:3)

the docsurlretrieve将文件放入磁盘并返回元组(filename, headers)。因此,urlretrieve返回时已保存该文件。

您可以打开并阅读使用标准库的zipfile模块检索到的ZIP文件。 glob在zip文件中不起作用,仅在普通的文件系统目录下工作。