Suggested python feature: allowing except in context maneger
Yair Eshel
guruyaya at gmail.com
Thu Jun 13 06:01:11 EDT 2024
Hello. I read this is a good place to give some suggestions for features in
python. If not, please let me know.
This is an example of a code I normally use in my everyday work:
import logging
try:
with open('sample_data/READM.md') as f:
print (len(f.read()))
except FileNotFoundError:
logging.error("File not found")
As you can see I have 2 levels of indentation, which can add some pain to
the work with the context manager. This code without context manager, can
be replaced by this code:
import logging
try:
f = open('sample_data/READM.md') as f:
print (len(f.read()))
except FileNotFoundError:
logging.error("File not found")
finally:
f.close()
And while this offers less indentations, it skips the usage of the very
handy context manager.
I would like to suggest an alternative syntax, that will, in a sense, apply
the best of both worlds:
import logging
with open('sample_data/README.md') as f:
print (len(f.read()))
except FileNotFoundError:
logging.error("File not")
As "with" applies the behavior of the "try / finally" it feels like a
natural part of this syntax. This could provide a cleaner code.
If this idea is accepted, there are several things that need to be
discussed, like what to do with "else" or "finally" statement following a
context manager. I'm not sure about the proper way to handle this.
With hopes for an even more readable future
Yair
--
בברכה,
יאיר אשל כהנסקי
מתכנת וטכנאי מילים
https://www.inspect-element.net/YouAreHere/#/start
More information about the Python-list
mailing list