【发布时间】:2021-03-24 16:26:50
【问题描述】:
我对下面代码的行为感到困惑。有两个问题;我不确定它们是否以某种奇怪的方式相关。
第一个问题是更重要的问题。该代码应保存两个包含相同数据的文件。然而,test.pkl 大约是 79 kB,而另一个是空的。为什么创建文件后那里没有保存任何内容?
我注意到的第二个问题是第二个文件被保存为e-v-w1-n2-2020-12-13-19 之类的东西,没有任何文件扩展名。 .pkl 怎么了?
我在 Windows 10 上使用 Python 3.8 和 pickle 4.0。
import pickle
import numpy as np
import datetime
n = 100
z = np.zeros((n,n))
with open("test.pkl" , 'wb') as myfile:
pickle.dump(z, myfile)
filename = "e-v-w%s-n%s-%s.pkl" % (1, 2, datetime.datetime.now().strftime("%Y-%m-%d-%H:%M"))
print(filename)
with open(filename, "wb") as outfile:
pickle.dump(z, outfile, pickle.HIGHEST_PROTOCOL)
顺便说一句,当我打印filename 时,.pkl 应该会出现。
【问题讨论】:
-
逐步调试和异常捕获会告诉您问题所在。在进行 SO 开发之前,这是一个值得采用的仪式。
-
谢谢!我没有想到这一点,因为我以前从未真正使用过。根据您的评论,我刚刚学会了如何使用
pdb的基本功能。但是,有些事情我不明白 - 异常捕获在这里有什么帮助?代码运行完成,没有抛出任何错误。 -
在此处查看第二个答案stackoverflow.com/questions/713794/…
-
谢谢 - 如果我理解的话,
with语句中有一个我们可以捕获的错误,但 Python 不会停止执行代码(只是with块) .很高兴知道。