Python 3:资源警告:未关闭的文件 <_io.TextIOWrapper name='PATH_OF_FILE'

Posted

技术标签:

【中文标题】Python 3:资源警告:未关闭的文件 <_io.TextIOWrapper name=\'PATH_OF_FILE\'【英文标题】:Python 3: ResourceWarning: unclosed file <_io.TextIOWrapper name='PATH_OF_FILE'Python 3:资源警告:未关闭的文件 <_io.TextIOWrapper name='PATH_OF_FILE' 【发布时间】:2018-11-18 01:14:02 【问题描述】:

当我在 python 中使用 "python normalizer/setup.py test 运行测试用例时 " 我收到以下异常

 ResourceWarning: unclosed file <_io.TextIOWrapper name='/Users/workspace/aiworkspace/skillset-normalization-engine/normalizer/lib/resources/skills.taxonomy' mode='r' encoding='utf-8'>

在代码中,我正在读取一个大文件,如下所示:

def read_data_from_file(input_file):
    current_dir = os.path.realpath(
        os.path.join(os.getcwd(), os.path.dirname(__file__)))
    file_full_path = current_dir+input_file
    data = open(file_full_path,encoding="utf-8")
    return data

我错过了什么?

【问题讨论】:

您没有关闭文件。您可以查看with 语句 (example)。 非常感谢@jedwards。你拯救了我的一天 【参考方案1】:

来自Python unclosed resource: is it safe to delete the file?

此 ResourceWarning 表示您打开了一个文件,使用了它,但后来忘记关闭该文件。当 Python 注意到文件对象已死时,它会为您关闭它,但这只会在某个未知时间过去后发生。

def read_data_from_file(input_file):
    current_dir = os.path.realpath(
        os.path.join(os.getcwd(), os.path.dirname(__file__)))
    file_full_path = current_dir+input_file
    with open(file_full_path, 'r') as f:
        data = f.read()
    return data

【讨论】:

以上是关于Python 3:资源警告:未关闭的文件 <_io.TextIOWrapper name='PATH_OF_FILE'的主要内容,如果未能解决你的问题,请参考以下文章

Vue警告:渲染错误:“TypeError:路由未定义”[关闭]

“警告:无法对未安装的组件执行 React 状态更新。” [关闭]

Python之上下文管理协议

从 c++ 到 python 的 SWIG:未定义的符号导入问题 [关闭]

BufferedReader可以在Java中自动关闭吗

如何强制 PyCharm 警告未声明的类型?