[Python-Dev] Proposed new module for the Python library
Greg Ward
gward@python.net
Sat, 4 Aug 2001 11:18:47 -0400
On 02 August 2001, Eric S. Raymond said:
> There is a common `compiler-like' pattern in Unix scripts which is useful
> for translation utilities of all sorts. A program following this pattern
> behaves as a filter when no argument files are specified on the command
> line, but otherwise transforms each file individually into a corresponding
> output file.
Sounds like a useful tool to have around. I'm not sure the name
'ccframe' conjures up images of the above paragraph, but I'm not sure
what name *does*. This is the hardest sort of software to name!
> Design comments? Critiques? Code on request.
>
> I'm already considering throwing exceptions on open and rename errors
> instead of complaining to stderr and returning an error status. That
> would be more Pythonic, though slightly less convenient in the
> commonest cases.
How to handle failure to open an input file depends on circumstances:
* sometimes, it is utter calamity, and raising an exception is the
right thing to do
* sometimes, it's a user-level error, and
try:
file = open(filename)
except IOError, err:
sys.exit("%s: %s" % (filename, err.strerror))
is the right thing to do
* sometimes, it's just something the user ought to know about, and
the "except" clause above can be turned into
sys.stderr.write("warning: %s: %s" % (filename, err.strerror))
continue # next file, please
* conceivably, it's something you can just ignore
IOW, I think this should be an option for users of the framework. The
default should be to throw an exception -- kaBOOM! For me, the middle
two options would be most commonly used, but modules should not
sys.exit() or sys.stderr.write() unless they are explicitly told to do
so.
Greg
--
Greg Ward - nerd gward@python.net
http://starship.python.net/~gward/
My opinions may have changed, but not the fact that I am right.