我正在使用此功能从.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
内也是如此档案
答案 0 :(得分:4)
使用
outfile = open(os.path.join(dir, os.path.basename(name)), 'wb')
从ZIP条目的名称中删除路径。这样,只剩下文件名而你没有得到任何目录。您还必须注释掉os.mkdir()
或将其替换为pass
。