2010-03-17 32 views
0

我使用这个功能来提取.zip压缩包文件,并将其存储在服务器上:逻辑蟒蛇的问题 - 处理目录和文件在他们

def unzip_file_into_dir(file, dir): 
    import sys, zipfile, os, os.path 

    os.makedirs(dir, 0777) 
    zfobj = zipfile.ZipFile(file) 
    for name in zfobj.namelist(): 
     if name.endswith('/'): 
      os.mkdir(os.path.join(dir, name)) 
     else: 
      outfile = open(os.path.join(dir, name), 'wb') 
      outfile.write(zfobj.read(name)) 
      outfile.close() 

和使用:

unzip_file_into_dir('/var/zips/somearchive.zip', '/var/www/extracted_zip') 

somearchive.zip具有这样的结构:

somearchive.zip 
    1.jpeg 
    2.jpeg 
    another.jpeg 

,或者somethimes,这一个:

somearchive.zip 
    somedir/ 
     1.jpeg 
     2.jpeg 
     another.jpeg 

的问题是:如何修改我的功能,让我extracted_zip目录将永远只包含图像,而不是图像在另一个子目录,即使图像存储在somedir档案内。

回答

4

使用

outfile = open(os.path.join(dir, os.path.basename(name)), 'wb') 

从ZIP条目的名称剥离路径。这样,只剩下文件名,并且你没有得到任何目录。您还必须注释掉os.mkdir()或将其替换为pass

+0

谢谢,简单,工作得很好:) – 2010-03-17 12:31:09