We should close the file object opened without corresponding close.
Apply with the Grit CLI
grit apply open_file_object_never_closed
File object opened never closed
BEFORE
def func1(): # BAD: open-never-closed fd = open('foo') x = 123 def func1(): # BAD: open-never-closed fdd = tarfile.open('foo') x = 123 def func1(): # BAD: open-never-closed fd22 = tempfile.SpooledTemporaryFile('foo') x = 123 def test4(): # GOOD: close-not-needed with open("/tmp/blah.txt", 'r') as fin: data = fin.read() def test4(): # GOOD: close-not-needed with io.open("/tmp/blah.txt", 'r') as fin: data = fin.read() def test4(): # GOOD: close-not-needed with empfile.TemporaryFile("/tmp/blah.txt", 'r') as fin: data = fin.read() def func2(): # GOOD:open-never-closed fd = open('bar') fd.close() def func3(): # GOOD: open-never-closed fd = open('baz') try: pass finally: fd.close()
AFTER
def func1(): # BAD: open-never-closed fd = open('foo') x = 123 fd.close() def func1(): # BAD: open-never-closed fdd = tarfile.open('foo') x = 123 fdd.close() def func1(): # BAD: open-never-closed fd22 = tempfile.SpooledTemporaryFile('foo') x = 123 fd22.close() def test4(): # GOOD: close-not-needed with open("/tmp/blah.txt", 'r') as fin: data = fin.read() def test4(): # GOOD: close-not-needed with io.open("/tmp/blah.txt", 'r') as fin: data = fin.read() def test4(): # GOOD: close-not-needed with empfile.TemporaryFile("/tmp/blah.txt", 'r') as fin: data = fin.read() def func2(): # GOOD:open-never-closed fd = open('bar') fd.close() def func3(): # GOOD: open-never-closed fd = open('baz') try: pass finally: fd.close()