我希望能够直接将在循环中创建的多个对象(例如图形)保存到zip文件中,而无需将它们保存在目录中。
目前,我将这些图形保存在一个文件夹中,然后再将它们压缩为zip文件。
目前,我将这些图形保存在一个文件夹中,然后再将它们压缩为zip文件。
import matplotlib.pyplot as plt
from zipfile import ZipFile
for i in range(10):
plt.plot([i, i])
plt.savefig('fig_' + str(i) + '.png')
plt.close()
image_list = []
for file in os.listdir(save_path):
if file.endswith(".png"):
image_list.append(os.path.join(save_path, file))
with ZipFile(os.path.join(save_path, 'export.zip'), 'w') as zip:
for file in image_list:
zip.write(file)
如果答案是肯定的,是否有一种方法可以针对任何类型的对象执行相同的操作,还是这取决于对象类型?
ZipFile.writestr()
。尽管函数名字是这样的,但参数data
可以是bytes
或字符串,如果是字符串,则在存储之前将其编码为UTF-8。 - BoarGuleszipfile.ZipFile('zipfile_append.zip', mode='a')
进行附加。 - Alessandro Bitetto