2013-08-31 69 views
0

我想讓一個腳本能夠打開一個tkinter窗口,選擇一個目錄。在這個文件夾中選擇幾個* .zip文件並將它們解壓縮。extractall()方法不能在Python 2.7上工作

我的代碼不會給我錯誤,但不會解開文件。我正在使用python2.7的extractall()方法

import zipfile,os,tkFileDialog,Tkinter,glob 

root = Tkinter.Tk() 
directory = tkFileDialog.askdirectory(parent=root,initialdir="/Users/me/zips",title='Please select a directory') 
if len(directory) > 0 : 
    print ("Dossier OK") 


for ArchivesZip in glob.glob(os.path.join(directory,'*.zip')): 
    print ArchivesZip 
    zip_ref = zipfile.ZipFile(ArchivesZip, 'r') 
    zip_ref.extractall() 
    zip_ref.close() 

非常感謝您的建議。

+0

是什麼讓你覺得'zipfile.ZipFile()'可以接受一個目錄?你想達到什麼目的,提取zipfile *到*選定的目錄? –

+0

是的,我試圖在同一個目錄中解壓縮一堆zip文件。我認爲zipfile.ZipFile()方法會接受目錄中包含的文件列表。 – Badiou30120

+0

我也嘗試過這一個:'爲archivesZip glob.glob(os.path.join(目錄,'*。zip')): 打印ArchivesZip zip_ref = zipfile.ZipFile(ArchivesZip,'r') zip_ref。 extractall() zip_ref.close()' – Badiou30120

回答

0

您的代碼工作正常,但您將文件解壓到當前工作目錄。那個目錄取決於你如何開始你的程序。

你很可能想明確指定一個目錄來提取zip文件。用戶選擇的目錄是一個好的開始點:

for ArchivesZip in glob.glob(os.path.join(directory,'*.zip')): 
    print ArchivesZip 
    zip_ref = zipfile.ZipFile(ArchivesZip, 'r') 
    zip_ref.extractall(directory) 
    zip_ref.close() 
+0

哦!我愚蠢。我認爲extractall()方法可以隱式地在與選定文件相同的目錄中unzipp ...現在,它正在工作。謝謝:) – Badiou30120