代码之家  ›  专栏  ›  技术社区  ›  Silver Light

逻辑python问题处理目录和其中的文件

  •  0
  • Silver Light  · 技术社区  · 14 年前

    我使用此函数从.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
    

    或者,有时,这个:

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

    问题是: extracted_zip 目录总是只包含图像,而不是另一个子目录中的图像,即使图像存储在 somedir 在档案馆里。

    1 回复  |  直到 14 年前
        1
  •  4
  •   Aaron Digulla    14 年前

    使用

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

    从ZIP条目的名称中删除路径。这样,只剩下文件名,就不会得到任何目录。您还必须注释掉 os.mkdir() pass .