Python ResourceWarning:隐式清理
我有以下代码,称为test_build,它有一个测试用例,用于将一个scikit学习模型以及x_train、y_train和score数据保存在tuple对象中的.pkl文件中Python ResourceWarning:隐式清理,python,Python,我有以下代码,称为test_build,它有一个测试用例,用于将一个scikit学习模型以及x_train、y_train和score数据保存在tuple对象中的.pkl文件中 from build import * import os import pandas as pd import sklearn from sklearn import * import unittest from sklearn.model_selection import train_test_split imp
from build import *
import os
import pandas as pd
import sklearn
from sklearn import *
import unittest
from sklearn.model_selection import train_test_split
import numpy as np
import tempfile
class TestMachineLearningUtils(unittest.TestCase):
def test_save_model(self):
X, y = np.arange(10).reshape((5,2)), range(5)
model = RandomForestClassifier(n_estimators = 300,
oob_score = True,
n_jobs = -1,
random_state = 123)
X_train, X_test, y_train, y_test = train_test_split(\
X, y, test_size=0.33, random_state=42)
clf = model.fit(X_train, y_train)
score = model.score(X_test, y_test)
dir_path = os.path.dirname(os.path.realpath(__file__))
f = tempfile.TemporaryDirectory(dir = dir_path)
pkl_file_name = f.name + "/" + "pickle_model.pkl"
tuple_objects = (clf, X_train, y_train, score)
path_model = save_model(tuple_objects, pkl_file_name)
exists_model = os.path.exists(path_model)
self.assertExists(exists_model, True)
if __name__ == "__main__":
unittest.main()
这是我在测试文件中导入的构建模块中的save_model函数的内容
def save_model(tuple_objects, model_path):
pickle.dump(tuple_objects, open(model_path), 'wb')
return model_path
我运行的问题是,我无法测试文件是否在临时目录中创建。它显然是创建的,但在创建之后,它会从我收到的错误消息中被清除
C:\Users\User\AppData\Local\Continuum\miniconda3\envs\geoenv\lib\tempfile.py:798: ResourceWarning: Implicitly cleaning up <TemporaryDirectory>
有人知道这个问题的解决办法吗?在python中,如何才能禁止清理使用tempfile模块创建的临时目录?您根本不知道。如果希望目录在作用域内持续时间更长,则创建的不是临时目录
或者更可能是在测试时-您在测试设置、填充、测试、拆卸中创建目录,因此每个测试都是独立的。在我看来,您的代码做的正是您希望它做的,您只是被警告弄糊涂了。警告只是告诉您应该显式删除临时目录,但是模块非常乐意为您这样做