使用 python 2.5 将 zip 文件下载到本地驱动器并将所有文件解压到目标文件夹
我正在尝试将 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)
######################################################
I am trying to download a zip file to a local drive and extract all files to a destination folder.
so i have come up with solution but it is only to "download" a file from a directory to another directory but it doesn't work for downloading files. for the extraction, I am able to get it to work in 2.6 but not for 2.5. so any suggestions for the work around or another approach I am definitely open to.
thanks in advance.
######################################
'''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)
######################################################
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
urllib.urlretrieve 可以获取一个文件(zip或其他方式) ;-) 从 URL 到给定路径。
extractall
确实是 2.6 中的新功能,但在 2.5 中您可以使用显式循环(获取所有名称、打开每个名称等)。您需要示例代码吗?所以这是一般的想法(如果你想在每种可能出错的情况下给出一个很好的错误消息,则需要更多
try
/except
,当然,有一百万种变体——我只使用几个这样的情况作为例子......):urllib.urlretrieve can get a file (zip or otherwise;-) from a URL to a given path.
extractall
is indeed new in 2.6, but in 2.5 you can use an explicit loop (get all names, open each name, etc). Do you need example code?So here's the general idea (needs more
try
/except
if you want to give a nice error message in each and every case which could go wrong, of which, of course, there are a million variants -- I'm only using a couple of such cases as examples...):要下载,请查看 urllib:
要解压缩,请使用 zipfile。另请参阅此示例。
For downloading, look at urllib:
For unzipping, use zipfile. See also this example.
到目前为止,我发现的最短方法是使用 +alex 答案,但使用 ZipFile.extractall() 而不是循环:
The shortest way i've found so far, is to use +alex answer, but with ZipFile.extractall() instead of the loop: