gpt4 book ai didi

python - 将 zip 文件下载到本地驱动器并使用 python 2.5 将所有文件解压缩到目标文件夹

转载 作者:可可西里 更新时间:2023-11-01 16:23:49 31 4
gpt4 key购买 nike

我正在尝试将 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)

######################################################

最佳答案

urllib.urlretrieve可以从给定路径的 URL 获取文件(zip 或其他方式;-)。

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)

关于python - 将 zip 文件下载到本地驱动器并使用 python 2.5 将所有文件解压缩到目标文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1774434/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com