Python и urllib

Я пытаюсь загрузить zip-файл ("tl_2008_01001_edges.zip") с сайта переписи ftp с помощью 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-сайта с помощью функции шарика?

Спасибо.

7
задан rypel 21 May 2013 в 09:50
поделиться

3 ответа

Используйте 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
8
ответ дан 6 December 2019 в 12:50
поделиться

Согласно документам , urlretrieve помещает файл на диск и возвращает кортеж (имя файла, заголовки) . Таким образом, файл уже сохранен, когда возвращается urlretrieve .

Вы можете открыть и прочитать полученный вами ZIP-файл с помощью модуля zipfile стандартной библиотеки. glob не работает внутри zip-файлов, только в каталогах нормальной файловой системы.

3
ответ дан 6 December 2019 в 12:50
поделиться
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())
5
ответ дан 6 December 2019 в 12:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: