2013-03-05 43 views
0

我需要幫助編輯下面的腳本,其中拉鍊目錄的內容。我的最終目標是創建一個腳本,它將查看C:\ Test(其中將包含多個目錄),並使用C:\ Test中的每個目錄的內容創建一個新的zip文件。棘手的部分是我需要的路徑是C:\,即使目錄的真實路徑是C:\ Test。這是可能的還是我在做夢?拉鍊多個子目錄與個別拉鍊的路徑

感謝

import zipfile, os 

def makeArchive(fileList, archive): 

    try: 
     a = zipfile.ZipFile(archive, 'w', zipfile.ZIP_DEFLATED) 
     for f in fileList: 
      print "archiving file %s" % (f) 
      a.write(f) 
     a.close() 
     return True 
    except: return False 

def dirEntries(dir_name, subdir, *args): 

    fileList = [] 
    for file in os.listdir(dir_name): 
     dirfile = os.path.join(dir_name, file) 
     if os.path.isfile(dirfile): 
      if not args: 
       fileList.append(dirfile) 
      else: 
       if os.path.splitext(dirfile)[1][1:] in args: 
        fileList.append(dirfile) 
     # recursively access file names in subdirectories 
     elif os.path.isdir(dirfile) and subdir: 
      print "Accessing directory:", dirfile 
      fileList.extend(dirEntries(dirfile, subdir, *args)) 
    return fileList 

if __name__ == '__main__': 
    folder = r'C:\test' 
    zipname = r'C:\test\test.zip' 
    makeArchive(dirEntries(folder, True), zipname) 

回答

0

您可以按如下更改存檔內的文件的路徑:我似乎

a.write(PATH_ON_FILESYSTEM, 
     DESIRED_PATH_IN_ARCHIVE 
) 
+0

不能改變路徑,但稍後我會盡力。更重要的是,我需要scipt爲每個目錄創建多個ZIP文件。目前該腳本在每個目錄內製作一個大的ZIP文件。 – 2013-03-06 18:25:53