在Python 3.4中,如何将Matplotlib生成的多个.png图形输出到一个zip文件中?

3

我写了一个程序,可以使用Python中的MatPlotLib从CSV文件输出多个不同的饼图(超过60个)。 我不认为需要分享所有代码,但是我有一个draw()函数来创建图表,并以以下方式结束:

def draw(data):
    [make the graph]
    plt.savefig(filename)

这个函数可以将我的一个图形成功地保存为 .png 文件并存储在当前工作目录中。然后我运行一个循环,为我的数据的每个部分创建一个饼图。代码如下:

if __name__ == '__main__':
    data = sys.argv[1]
    things = process(data) 
    for thing in things.values():
        draw(thing)

我想知道是否有任何Python包可以帮助我自动将60多张图形输出到一个zip文件中。


2
使用这个模块似乎应该非常简单:https://docs.python.org/3.4/library/zipfile.html - jwinterm
2个回答

5

当然,有一个标准的zipfile模块,可以压缩现有文件,也可以压缩字节字符串。因此,如果您不想单独创建文件然后将它们压缩,您可以将它们保存到BytesIO对象中,然后压缩这些字节缓冲区。我已经为您提供了Python 3文档的链接,但这些功能在Python 2中也是可用的。


3
如果您想保存pngzip文件,可能是为了调试目的,您可以使用zipfile来实现:
import zipfile

zf = zipfile.ZipFile('myzip.zip', mode='w')

zf.write('image1.png')
zf.write('image2.png')
# ...

zf.close()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接