Pickle 未将数据保存到具有格式化字符串名称的文件中
Pickle is not saving data to a file with a formatted string name
我对下面代码的行为感到困惑。有两个问题;我不确定它们是否以某种奇怪的方式相关。
第一个问题比较重要。该代码应保存两个包含相同数据的文件。然而,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
会正常显示。
Windows 文件路径中不允许使用冒号字符(“:”),例如 this post。
您的 strftime
格式包含一个冒号,这使得该路径无法写入,并且可能也是冒号后面的字符(像 .pkl
扩展名一样糟糕的原因) 丢失。
运行 您的代码在 Unix 平台上按预期工作。只需更改您的 strftime
格式,使其与 Windows.
兼容
我对下面代码的行为感到困惑。有两个问题;我不确定它们是否以某种奇怪的方式相关。
第一个问题比较重要。该代码应保存两个包含相同数据的文件。然而,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
会正常显示。
Windows 文件路径中不允许使用冒号字符(“:”),例如 this post。
您的 strftime
格式包含一个冒号,这使得该路径无法写入,并且可能也是冒号后面的字符(像 .pkl
扩展名一样糟糕的原因) 丢失。
运行 您的代码在 Unix 平台上按预期工作。只需更改您的 strftime
格式,使其与 Windows.