我正在尝试从 ftp 下载 zip 文件(“tl_2008_01001_edges.zip”) 人口普查 使用 urllib 的站点。当我获得 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 文件夹列表(或本例中的县),我可以运行 ftp 地点 使用 glob 函数列表?

谢谢。

有帮助吗?

解决方案

使用 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

其他提示

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

文档, urlretrieve 将文件放入磁盘并返回一个元组 (filename, headers). 。所以文件已经保存了 urlretrieve 返回。

您可以打开并阅读使用以下命令检索到的 ZIP 文件 压缩文件 标准库的模块。 glob 不适用于 zip 文件,仅适用于普通文件系统目录。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top