загрузите zip-файл на локальный диск и извлеките все файлы в папку назначения с помощью python 2.5

Я пытаюсь загрузить zip-файл на локальный диск и извлечь все файлы в папку назначения.

поэтому я придумал решение, но это всего лишь «загрузить» файл из каталога в другой каталог, но он не работает для загрузки файлов. для извлечения я могу заставить его работать в версии 2.6, но не для 2.5. так что любые предложения для работы вокруг или другого подхода я определенно открыт. заранее спасибо.

###################################### '''this part works but it is not good for URl links''' import shutil sourceFile = r"C:\Users\blueman\master\test2.5.zip" destDir = r"C:\Users\blueman\user" shutil.copy(sourceFile, destDir) print "file copied" ###################################################### '''extract works but not good for version 2.5''' import zipfile GLBzipFilePath =r'C:\Users\blueman\user\test2.5.zip' GLBextractDir =r'C:\Users\blueman\user' def extract(zipFilePath, extractDir): zip = zipfile(zipFilePath) zip.extractall(path=extractDir) print "it works" extract(GLBzipFilePath,GLBextractDir) ###################################################### 

  • Как разбить файл с помощью python
  • Разархивировать zip-файлы в папки и подпапки с помощью python
  • Функция трансформирования / распаковки (инверсия zip)?
  • Извлечение файлов из zip без сохранения структуры с использованием python ZipFile?
  • Как вы разархивируете очень большие файлы в python?
  • Распаковка директории с помощью python
  • Распаковка и оператор *
  • Python: загрузка и распаковка ZIP-файла без записи на диск
  • 3 Solutions collect form web for “загрузите zip-файл на локальный диск и извлеките все файлы в папку назначения с помощью python 2.5”

    urllib.urlretrieve может получить файл (zip или иначе 😉 от URL-адреса до заданного пути.

    extractall действительно является новым в 2.6, но в 2.5 вы можете использовать явный цикл (получить все имена, открыть каждое имя и т. д.). Вам нужен пример кода?

    Итак, вот общая идея (нужно больше try / except если вы хотите дать хорошее сообщение об ошибке в каждом случае, которое может пойти не так, из чего, конечно, есть миллион вариантов – я использую только пару таких случаев, как примеры …):

     import os import urllib import zipfile def getunzipped(theurl, thedir): name = os.path.join(thedir, 'temp.zip') try: name, hdrs = urllib.urlretrieve(theurl, name) except IOError, e: print "Can't retrieve %r to %r: %s" % (theurl, thedir, e) return try: z = zipfile.ZipFile(name) except zipfile.error, e: print "Bad zipfile (from %r): %s" % (theurl, e) return for n in z.namelist(): dest = os.path.join(thedir, n) destdir = os.path.dirname(dest) if not os.path.isdir(destdir): os.makedirs(destdir) data = z.read(n) f = open(dest, 'w') f.write(data) f.close() z.close() os.unlink(name) 

    Для загрузки посмотрите на urllib:

     import urllib webFile = urllib.urlopen(url) 

    Для распаковки используйте zipfile . См. Также этот пример .

    Самый короткий путь, который я нашел до сих пор, заключается в использовании ответа + alex, но с ZipFile.extractall () вместо цикла:

     from zipfile import ZipFile from urllib import urlretrieve from tempfile import mktemp filename = mktemp('.zip') destDir = mktemp() theurl = 'http://www.example.com/file.zip' name, hdrs = urlretrieve(theurl, filename) thefile=ZipFile(filename) thefile.extractall(destDir) thefile.close() 
    Python - лучший язык программирования в мире.