在 Windows 上的 Python 2.7.4 中,如果我的目录结构如下:
test/foo/a.bak
test/foo/b.bak
test/foo/bar/c.bak
test/d.bak
我使用以下内容将它们添加到现有存档中,以使“d.bak”位于存档的根目录:
import zipfile
import os.path
import fnmatch
def find_files(directory, pattern):
for root, dirs, files in os.walk(directory):
for basename in files:
if fnmatch.fnmatch(basename, pattern):
filename = os.path.join(root, basename)
yield filename
if __name__=='__main__':
z = zipfile.ZipFile("testarch.zip", "a", zipfile.ZIP_DEFLATED)
for filename in find_files('test', '*.*'):
print 'Found file:', filename
z.write(filename, os.path.basename(filename), zipfile.ZIP_DEFLATED)
z.close()
zip 文件的目录是平面的。仅当其中存在子目录时才会创建foo/
目录(如果我 exclude ,它不会创建目录。如果包含,则创建但如果有意义则不创建),但没有子目录或文件:test/foo/bar/c.bak
foo/
foo/bar/
foo/
a.bak
b.bak
c.bak
d.bak
我错过了什么吗?