2017-12-04 25 views
0

これは、ファイルオブジェクトがメモリから削除することで閉じられなければならないことは明らかです:json.loadでファイルを閉じる必要がありますか?

file = open('data.txt', 'r') 
#more code here 
file.close() 

json.load方法に役立ったファイルオブジェクトをクローズすることも必要ですか?

data = json.load(open('data.json','r')) 

私は変数に格納されていないファイルオブジェクトので、ノーと思いますが、そうならば、それはどのように行うことができますか?

答えて

4

GCを使用してファイル記述子をクリーニング/クローズしないでください。 代わりにcontext managerを使用してください。

のデフォルトであるため、'r'モードを指定する必要もありません。

with open('data.json') as f: 
    data = json.load(f) 
+0

'あなたはGCがファイルを閉じたことがないことを言っている descriptor'ファイルを閉じるか、それはそれを閉じたりしませんかどうかわからないことを/きれいにGCに依存しないでください。 – multigoodverse

+0

@multigoodverse私は、あなたが期待したときにファイルを閉じるGCに頼ることができないと言っています。 – DeepSpace

関連する問題