this post의 질문에 거의 완벽하게 설명되어있는 과정에서 Matplotlib 플롯의 png 파일을 BytesIO 인스턴스에 쓰고 있습니다. 그런 다음 각 인스턴스를 다른 BytesIO 인스턴스에 ZipFile의 인스턴스로 작성하고 zipfile.writestr 메소드를 호출합니다. 오류가 0x80070057 : 매개 변수가이 열립니다Python 3.5 zipfile을 사용하여 zip 아카이브에 파일 가져 오기 winzip에서 매개 변수가 잘못되었습니다.
잘못 플롯
zip_buff = BytesIO()
with ZipFile(zip_buff, "w") as zipfile:
for number, data_set in enumerate(data_sets):
plot = write_plot(data_set)
zipfile.writestr("{}.png".format(number), plot.getvalue())
with open(file_path, "wb") as write_buff:
write_buff.write(zip_buff.getvalue())
그러나 내가 돌아올 우편 아카이브가 나에게 오류를 제공 보관 플롯
import pandas as pd
import matplotlib.pyplot as plt
def write_plot(data):
plot_buff = BytesIO()
fig, ax = plt.subplots()
dataframe = pd.DataFrame(data)
dataframe.plot(x="length", y="left", ax=ax, color="b")
dataframe.plot(x="length", y="right", ax=ax, color="r")
plt.savefig(plot_buff)
return plot_buff
만들기
7-zip 형식으로 사용해도 좋지만 사용자에게 알리거나 시도 할 수는 없습니다.
편집 : 죄송합니다. 누락 된 "wb"매개 변수는 질문에서 오타였으며 실제 코드의 일부입니다.
'with open (file_path)'은 읽기 전용이며 & text입니다. 이상하게도 작동합니다. 'open (file_path, "wb")'을 시도해 볼 수 있습니까? –
죄송합니다. 오타였습니다. 쓰기 및 이진 모드로 open을 호출하고 있습니다. –
이제 더 이상 스 니펫을 신뢰하지 않기 때문에 [mcve]에게 물어야합니다. –