سؤال
أحاول تنزيل ملف مضغوط ("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 موقع قائمة باستخدام وظيفة العالم؟
شكرًا.
المحلول
يستخدم 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())
لا تنتمي إلى StackOverflow