我有一个简短的方法,它将文件路径和该路径中的文件名列表作为参数,并且应该将所有这些文件压缩到一个存档文件中。问题是,它不是压缩文件,而是在存档中为我尝试压缩的每个文件创建一个空目录。这是方法:
def zip(self, file_path, filename_list):
f = zipfile.ZipFile(file_path + '_converted_zip_archive.zip', 'w')
for filename in filename_list:
f.write(file_path, filename)
f.close()
如果我打电话
zip('uploads/', ['test_1.txt', 'test_2.txt', 'test_3.txt'])
我最终得到了一个包含以下目录的存档文件:
/test_1.txt/
/test_2.txt/
/test_3.txt/
如果我在ZIP文件中创建一堆空目录而不是实际压缩这些文本文件,我做错了什么?
答案 0 :(得分:2)
您正在将目录写入存档三次(具有三个不同的名称)。为了更明确,您将以下内容写入存档:
uploads/ as test_1.txt
uploads/ as test_2.txt
uploads/ as test_3.txt
你更愿意这样做吗?
def zip(self, file_path, filename_list):
f = zipfile.ZipFile(file_path + '_converted_zip_archive.zip', 'w')
for filename in filename_list:
f.write(file_path + filename, filename) # note the addition of filename here
f.close()