Frage

Ich versuche, eine Zip-Datei ( "tl_2008_01001_edges.zip") von einem FTP zum Download Volkszählung Website mit urllib. Welche Form ist die Zip-Datei in, wenn ich es bekommen und wie speichere ich es?

Ich bin ziemlich neu in Python und nicht verstehen, wie urllib funktioniert.

Dies ist mein Versuch:

import urllib, sys

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

Wenn ich die Liste der FTP-Ordner (oder Landkreise in diesem Fall) weiß, ich kann laufen gelassen durch ftp Website Liste mit der glob-Funktion?

Danke.

War es hilfreich?

Lösung

Verwenden Sie urllib2.urlopen() für die Zip-Datei Daten und Verzeichnisliste.

Zur Verarbeitung von ZIP-Dateien mit dem zipfile Modul, können Sie schreiben sie in eine Datei, die dann an den zipfile.ZipFile Konstruktor übergeben wird. Abrufen der Daten ist unkompliziert read() auf die Datei-ähnliches Objekt unter Verwendung zurückgegeben von urllib2.urlopen().

Fetching Verzeichnisse:

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

Oder Splitting für Verzeichnisnamen:

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

Andere Tipps

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

die docs , urlretrieve puts die Datei auf der Festplatte und gibt ein Tupel (filename, headers). So ist die Datei bereits gespeichert, wenn urlretrieve kehrt zurück.

Sie können die ZIP-Datei öffnen und lesen Sie mit der zipfile Modul der Standardbibliothek. glob funktioniert nicht innerhalb ZipFiles, nur auf normale Dateisystem-Verzeichnisse.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top