在Python 2.7中将zip文件内容解压缩到特定的目录

这是我目前使用的代码提取一个zip文件,该文件与脚本位于当前工作目录中。 我怎样才能指定一个不同的目录来提取?

我试过的代码不是在我想要的地方提取。

import zipfile fh = open('test.zip', 'rb') z = zipfile.ZipFile(fh) for name in z.namelist(): outfile = open(name, 'wb') outfile.write('C:\\'+z.read(name)) outfile.close() fh.close() 

我想你刚刚在这里混了。 应该可能是这样的:

 import zipfile fh = open('test.zip', 'rb') z = zipfile.ZipFile(fh) for name in z.namelist(): outpath = "C:\\" z.extract(name, outpath) fh.close() 

如果你只是想提取所有的文件:

 import zipfile with zipfile.ZipFile('test.zip', "r") as z: z.extractall("C:\\") 

我在这个线程中尝试了其他的答案,但对我来说最终的解决scheme只是简单的:

 zfile = zipfile.ZipFile('filename.zip') zfile.extractall(optional_target_folder) 

看看extractall ,但只能用于可靠的zip文件。

添加到secretmike上面的答案与支持python 2.6提取所有文件。

 import zipfile import contextlib with contextlib.closing(zipfile.ZipFile('test.zip', "r")) as z: z.extractall("C:\\") 

如果你只是想使用Python从命令行提取zip文件(比如说你没有unzip命令),那么你可以直接调用zipfile模块

 python -m zipfile -e monty.zip target-dir/ 

看看文档 。 它也支持压缩和列出内容。

彼得·德·里瓦兹在上面的评论中有一个观点。 你将要在呼叫目录中打开()。 你会想要做这样的事情:

 import zipfile import os os.mkdir('outdir') fh = open('test.zip','rb') z = zipfile.ZipFile(fh) for name in z.namelist(): outfile = open('outdir'+'/'+name, 'wb') outfile.write() outfile.close() fh.close() 

我修改了代码,要求用户input需要提取的文件名和path,这样用户就可以更好地控制提取文件夹的位置以及应该为提取的文件夹分配什么名称。

 import zipfile #picking zip file from the directory ZipFileName = raw_input("Enter full path to zip file:") fh = open( ZipFileName , 'rb') z = zipfile.ZipFile(fh) #assigning a name to the extracted zip folder DestZipFolderName = raw_input("Assign destination folder a name: ") DestPathName = raw_input("Enter destination directory: ") DestPath = DestPathName + "\\" + DestZipFolderName for name in z.namelist(): outpath = DestPath z.extract(name, outpath) fh.close()