Я создал несколько фигур, используя python с matplotlib. PyQt5 используется в качестве backend для отображения фигур. Я сохраняю цифры в формате svg с помощью savefig.
Моя проблема в том, что я хотел бы создать один zip файл, содержащий все файлы svg. Упрощенная версия того, что у меня есть:
import matplotlib
figure = matplotlib.figure.Figure(dpi=72)
canvas = matplotlib.backends.backend_qt5agg.FigureCanvasQTAgg(figure)
axes = figure.add_axes((0.1, 0.15, 0.85, 0.8))
axes.plot(data)
# Do all of that three times to give me three separate figures
# (let call them figure, figure1 and figure2)
Теперь я могу сохранить каждую фигуру, используя
figure.savefig(filename, format='svg')
figure1.savefig .....
Но я действительно хотел бы иметь что-то вроде
fileobject = figure.savefig(format='svg')
где я мог бы использовать tarfile
модуль для сжатия и хранения всего fileobject
в одном архиве. Моим текущим обходным решением является сохранение файлов, их чтение и использование этих объектов для создания файла tar и последующего удаления оригиналов. Имея более прямой способ сделать это, было бы хорошо...
вы можете использовать буферный поток для сохранения вашего файла. Что-то вроде:
import io
fileobject1 = io.BytesIO()
figure1.savefig(fileobject1, format='svg')
fileobject2 = io.BytesIO()
figure2.savefig(fileobject2, format='svg')
и т.п.