如何将特定文件类型用os.walk添加到已存在的ZipFile中?
基本上,我需要把一个文件夹里某种类型的所有文件复制到一个ZipFile
中,要求是放在最顶层,也就是不能放在任何子文件夹里。
举个例子,我有一个文件夹叫'A Folder',里面有很多.png格式的文件。我想把这些文件都复制到一个已经存在的ZipFile
里。目前我只能把整个文件夹一起复制过去,所以最后得到的是'ZipFile\A Folder\很多.png文件'
,而不是我想要的'ZipFile\很多.png文件'
。
我现在用来移动文件和文件夹的代码是:
for root, dirs, files in os.walk('A Folder'):
for f in files:
fname = os.path.join(root, f)
myzip.write(fname)
还有一个小问题,怎么才能从ZipFile
中删除一个文件夹呢?
1 个回答
2
根据Python的文档,zipfile.write() 方法支持一个第二个参数,这个参数是目标名称(也就是在压缩包里的名字)。你可以这样使用它:
for root, dirs, files in os.walk('A Folder'):
for f in files:
fname = os.path.join(root, f)
new_path = os.path.normpath(fname.replace('A Folder', ''))
myzip.write(fname, new_path)