Python ResourceWarning:隐式清理

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

我有以下代码,称为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
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模块创建的临时目录?

您根本不知道。如果希望目录在作用域内持续时间更长,则创建的不是临时目录


或者更可能是在测试时-您在测试设置、填充、测试、拆卸中创建目录,因此每个测试都是独立的。

在我看来,您的代码做的正是您希望它做的,您只是被警告弄糊涂了。警告只是告诉您应该显式删除临时目录,但是模块非常乐意为您这样做