web-dev-qa-db-ja.com

Python 3:ResourceWarning:unclosed file <_io.TextIOWrapper name = 'PATH_OF_FILE'

python with "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

何が欠けていますか?

6
Minisha

から Pythonクローズされていないリソース:ファイルを削除しても安全ですか?

この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
5
MontyPython