压缩文件生成的动态

时间:2015-09-18 00:29:22

标签: python python-2.7 zipfile

如何压缩“飞”上生成的一堆文件?

我正在测试这个小规模的场景:

from time import strftime
import zipfile

# create new file
today = strftime("%Y-%m-%d %H:%M:%S")

new_file = open('testing123.txt', 'w')
text = 'this file was just added:' + str(today)
new_file.write(text)

# create zip file and write to it
newZip = zipfile.ZipFile("test.zip", "w")
newZip.write('testing123.txt')
new_file.close()

print "file created"

两件事情,首先,当你解压缩创建的zip文件时,在脚本顶部创建的testing123.txt是空白的,这应该包括一个循环生成的文件列表。

所以我想知道什么是动态生成一堆文件的最佳方法,然后将它们很好地压缩到一个zip文件夹。

1 个答案:

答案 0 :(得分:3)

首先,解压缩后文件显示为空的原因是您在使用文本文件后没有关闭。因为您没有关闭文件,所以write实际上没有提交到磁盘,因此ZipFile.write看到了一个空文件。您可以使用with自动关闭文件,这样您就不必忘记.close

with open('testing123.txt', 'w') as new_file:
    new_file.write('this file was just added:' + str(today))

(您也可以使用.flush()强制提交写入,但这种情况不太常见。)

其次,如果您以编程方式生成文件内容,则应使用.writestr编写字符串而不在磁盘上创建实际文件:

newZip = zipfile.ZipFile("test.zip", "w")
newZip.writestr('testing123.txt', 'this file was just added:' + str(today))
newZip.close()