djq*_*djq 7 python urllib urllib2
我正在尝试使用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")
Run Code Online (Sandbox Code Playgroud)
如果我知道ftp文件夹(或本例中的县)的列表,我可以使用glob函数运行ftp 站点列表吗?
谢谢.
使用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
>>>
Run Code Online (Sandbox Code Playgroud)
或者,拆分目录名称:
>>> for l in files[:4]: print l.split()[-1]
...
01001_Autauga_County
01003_Baldwin_County
01005_Barbour_County
01007_Bibb_County
Run Code Online (Sandbox Code Playgroud)
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())
Run Code Online (Sandbox Code Playgroud)