I think this question is more of a "coding style" rather than technical issue.
Said I have a line of code:
buf = open('test.txt','r').readlines() ...
Will the file descriptor automatically close, or will it stay in the memory? If the file descriptor is not closed, what is the prefer way to close it?
close() closes a file descriptor, so that it no longer refers to any file and may be reused.
Python File close() Method The close() method closes an open file. You should always close your files, in some cases, due to buffering, changes made to a file may not show until you close the file.
As long as your program is running, if you keep opening files without closing them, the most likely result is that you will run out of file descriptors/handles available for your process, and attempting to open more files will fail eventually.
The close() method of a file object flushes any unwritten information and closes the file object, after which no more writing can be done. Python automatically closes a file when the reference object of a file is reassigned to another file. It is a good practice to use the close() method to close a file.
If you assign the file object to a variable, you can explicitly close it using .close()
f = open('test.txt','r') buf = f.readlines() f.close()
Alternatively (and more generally preferred), you can use the with
keyword (Python 2.5 and greater) as mentioned in the Python docs:
It is good practice to use the
with
keyword when dealing with file objects. This has the advantage that the file is properly closed after its suite finishes, even if an exception is raised on the way. It is also much shorter than writing equivalent try-finally blocks:
>>> with open('test.txt','r') as f: ... buf = f.readlines() >>> f.closed True
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With