On 2019-03-20, ast <n...@gmail.com> wrote:
In the following snippet, a file is opened but
without any variable referring to it.
So the file can't be closed.

[line.split(":")[0]
   for line in open('/etc/passwd')
   if line.strip() and not line.startswith("#")]

What do you think about this practice ?

As others have agreed, the lack of close() is not good practice, even if it is unlikely to reduce anyone to tears.

Two other points, if I may:

1 it is a fairly complex line, having been split into three. If it is simplified into an explicit foreach-loop, then a file-handle becomes necessary - and can be closed. NB The greatest benefit there lies in the simplification/readability.
(not a reflection on you, but thinking of 'future-readers')

2 this (revealed snippet of) code will fail on a huge number of machines. [insert comment about the superiority of Linux/the failings of MS-Windows, here] Accordingly, it should be wrapped into a try...except block. That being the case, by unwinding the foreach-loop (1) and adding try...finally, it'll 'tick all your boxes'! There's also room for an illuminating (and educational) "I can't do that Dave" errmsg...

(despite my also being a fan of context-managers, per previous advice!)

--
Regards =dn
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to