【发布时间】:2013-04-09 00:45:17
【问题描述】:
在 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/ 目录仅 如果其中存在子目录(如果我排除test/foo/bar/c.bak,它不会创建目录。如果包含, foo/ 被创建,但不是 foo/bar/,如果这有意义的话),但没有子目录或文件:
foo/
a.bak
b.bak
c.bak
d.bak
我错过了什么吗?
【问题讨论】: