为什么我不能关闭 pickle 文件?
Why can't I close a pickle file?
我一直在研究分类器模型,使用 GridSearchCV 寻找最佳超参数。然后我腌制了模型,并将其加载回去(以节省每次我必须 运行 笔记本的时间)。
当我试图关闭它时,出现了这个错误:
AttributeError: 'GridSearchCV' object has no attribute 'close'
这是我的代码:
# Save the Grid Search CV object as a pickle file
pickle.dump(knn_grid, open(r'./knn_grid_model.p', 'wb'))
# load the Grid Search CV object
knn_grid = pickle.load(open(r'./knn_grid_model.p', 'rb'))
# Close the file
knn_grid.close()
知道如何克服这个问题吗?不关闭pickle文件会不会有什么大不了的?
knn_grid
不是文件,它是 GridSearchCV
对象,未被 pickled。
但是,你的第二个问题仍然成立:
Will it be a big deal if I don't close the pickle file?
按照您编写代码的方式,文件可能会保持打开状态,直到被垃圾收集或直到 Python 解释器退出。现在,打开文件进行 阅读 应该不会造成任何问题,但打开文件进行 写入 could cause missing data 应该不会造成任何问题。所以最好的做法是使用一个with
语句来确保内容写入并关闭文件:
with open('./knn_grid_model.p', 'wb') as f:
pickle.dump(knn_grid, f)
with open('./knn_grid_model.p', 'rb') as f:
knn_grid = pickle.load(f)
(请注意,在这种情况下,r 字符串没有任何区别。)
我一直在研究分类器模型,使用 GridSearchCV 寻找最佳超参数。然后我腌制了模型,并将其加载回去(以节省每次我必须 运行 笔记本的时间)。
当我试图关闭它时,出现了这个错误:
AttributeError: 'GridSearchCV' object has no attribute 'close'
这是我的代码:
# Save the Grid Search CV object as a pickle file
pickle.dump(knn_grid, open(r'./knn_grid_model.p', 'wb'))
# load the Grid Search CV object
knn_grid = pickle.load(open(r'./knn_grid_model.p', 'rb'))
# Close the file
knn_grid.close()
知道如何克服这个问题吗?不关闭pickle文件会不会有什么大不了的?
knn_grid
不是文件,它是 GridSearchCV
对象,未被 pickled。
但是,你的第二个问题仍然成立:
Will it be a big deal if I don't close the pickle file?
按照您编写代码的方式,文件可能会保持打开状态,直到被垃圾收集或直到 Python 解释器退出。现在,打开文件进行 阅读 应该不会造成任何问题,但打开文件进行 写入 could cause missing data 应该不会造成任何问题。所以最好的做法是使用一个with
语句来确保内容写入并关闭文件:
with open('./knn_grid_model.p', 'wb') as f:
pickle.dump(knn_grid, f)
with open('./knn_grid_model.p', 'rb') as f:
knn_grid = pickle.load(f)
(请注意,在这种情况下,r 字符串没有任何区别。)