Dan Klose wrote:
> Hi,
>
> I usually use perl but fancy a bit of a change so have started playing
> with python.
>
> using perl to open a file or directory I usually use:
>
> open(FILE, $file) or die "Error: $!\n";
>
> The $! is a perl variable that holds an error should the open fail,
> example being : "No such file or directory".
If you want the error to be fatal as in the example above, my recommendation is
to just use a plain open() call. If the open fails it will raise an exception
which will be caught by the interpreter. The interpreter will print the text of
the error and a complete stack trace which can be very useful in locating and
troubleshooting the error. For example:
>>> f=open('foo.txt')
Traceback (most recent call last):
File "<stdin>", line 1, in ?
IOError: [Errno 2] No such file or directory: 'foo.txt'
If you catch the exception and just print the error message you are suppressing
useful information.
If you want to print the error and continue processing, instead of aborting,
traceback.print_exc() is handy - it prints the same information as the
interpreter would. For example:
>>> import traceback
>>> def trapper():
... try:
... f = open('foo.txt')
... except IOError:
... traceback.print_exc()
... print 'Still here...'
...
>>> trapper()
Traceback (most recent call last):
File "<stdin>", line 3, in trapper
IOError: [Errno 2] No such file or directory: 'foo.txt'
Still here...
In these small examples the traceback is not that interesting, but in a larger
program they can be helpful. Also it is a good habit in general not to suppress
tracebacks - for file errors you may have a pretty good idea where the problem
is, but other kinds of errors can be harder to track down.
Kent
_______________________________________________
Tutor maillist - [email protected]
http://mail.python.org/mailman/listinfo/tutor