joblib转储写入0字节文件

时间:2019-12-09 22:17:12

标签: python joblib

joblib.dump似乎对我没有任何帮助。可能我遇到版本冲突或其他问题。任何帮助表示赞赏。

我的作业库版本:0.13.2
似乎也会影响0.14.0

要复制:

import joblib
import os

foo = open("bar", "w+b")
joblib.dump("test", foo)
print(os.stat("bar").st_size)

#prints 0... expect the size of a file containing the pickled string "test" > 0 bytes

1 个答案:

答案 0 :(得分:1)

缓冲区尚未写入磁盘,因此文件已创建但没有内容。您必须刷新内部缓冲区,然后将内容写入文件:

>>> foo = open("bar", "w+b")
>>> joblib.dump("test", foo)
>>> foo.flush()
>>> print(os.stat("bar").st_size)
14

或使用自动执行此操作的上下文管理器:

>>> with open("bar", "w+b") as foo:
>>>     joblib.dump("test", foo)
>>> print(os.stat("bar").st_size)
14

或者您可以禁用缓冲:

>>> foo = open("bar", "w+b", buffering=0)
>>> joblib.dump("test", foo)
>>> print(os.stat("bar").st_size)
14

也可以在这里看看:How often does python flush to a file?