Pregunta

Estoy intentando descargar un archivo zip ( "tl_2008_01001_edges.zip") de un ftp sitio censo usando urllib. ¿Qué forma es el archivo zip en cuando lo reciba y cómo puedo guardarlo?

Soy bastante nuevo en Python y no entiendo cómo funciona urllib.

Este es mi intento:

import urllib, sys

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

Si sé la lista de carpetas FTP (o condados en este caso), puedo ejecutar a través del ftp sitio de la lista usando la función glob?

Gracias.

¿Fue útil?

Solución

urllib2.urlopen() de los datos del archivo zip y listado de directorios.

Para procesar archivos zip con la zipfile módulo, se puede escribir en un archivo de disco que se hace pasar a continuación al constructor zipfile.ZipFile. Recuperando los datos es sencillo usando read() en el objeto de tipo fichero devuelto por urllib2.urlopen().

directorios Captación:

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

O, la división de los nombres de directorio:

>>> for l in files[:4]: print l.split()[-1]
... 
01001_Autauga_County
01003_Baldwin_County
01005_Barbour_County
01007_Bibb_County

Otros consejos

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

los documentos , urlretrieve pone el archivo en el disco y devuelve una tupla (filename, headers). Por lo que el archivo ya se guarda cuando vuelve urlretrieve.

Puede abrir y leer el archivo ZIP que ha recuperado con el archivo zip módulo de la biblioteca estándar. glob no funciona dentro zipfiles, sólo en una carpeta de sistema normales.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top