将多个文件写入zip文件(不起作用)

时间:2019-06-08 04:22:19

标签: python python-3.x zipfile

我已经看到了一些回应,但我的代码仍然无法正常工作。我已经在其上添加了打印语句,以查看每个阶段的工作,这(理论上!)实际上是我所追求的,但是我没有得到结果。

尝试使用WITH语句将多个文件循环存储到ZIP归档中(但不算幸运)

def files_rezip():
    num = 1
    for i in os.listdir():
        x = os.path.splitext(i)
        if 'temp' in x[0]:
            new_dir = os.getcwd() + '\\' + i

# (ABOVE IS CONTEXT) - BELOW IS WHERE THE ISSUE IS...
            with zipfile.ZipFile(os.getcwd() + '\\' + 'new_zip_'+ str(num) + '.zip', 'w') as new_file:
                for nf in os.listdir(new_dir):
                    new_file.write(nf)

            num += 1
    print('Task Complete')

我也尝试过:

new_file.write(new_dir + '\\' + nf)

问题似乎已经到了:

new_file.write(nf)

我已经尝试了上面的方法-但这只是没有路径的文件名

这确实提供了绝对路径并帮助其正确定位文件-但这还会导致zip在ZIP文件中重新创建整个文件路径?!

1 个答案:

答案 0 :(得分:0)

只需弄清楚(不得不说..在我遇到的任何教程中都没有看到这个建议!!)

with zipfile.ZipFile(os.getcwd() + '\\' + 'new_zip_'+ str(num) + '.zip', 'w') as new_file:
    for nf in os.listdir(new_dir):
        new_file.write(new_dir + '\\' + nf, nf) # n.b. extra parameter

解决方案是WRITE语句上的第二个参数,显式说明并传递所需的文件名。

脚本现在可以工作了-谢谢大家!