我已经看到了一些回应,但我的代码仍然无法正常工作。我已经在其上添加了打印语句,以查看每个阶段的工作,这(理论上!)实际上是我所追求的,但是我没有得到结果。
尝试使用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文件中重新创建整个文件路径?!
答案 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语句上的第二个参数,显式说明并传递所需的文件名。
脚本现在可以工作了-谢谢大家!