I have code in the pylockfile package that looks roughly like this (apologies for the indentation - I'm growing to dislike Gmail for typing code fragments):
try: write_pid_to_lockfile(somefile) except OSError as exc: if conditions_i_can_handle: do_other_stuff... else: raise LockFailed("Failed to create %s" % self.path) Thinking I would just get the final exception (not the one I caught originally), I was surprised to see this output on my screen: >>> lock.acquire() Traceback (most recent call last): File "lockfile/pidlockfile.py", line 80, in acquire write_pid_to_pidfile(self.path) File "lockfile/pidlockfile.py", line 163, in write_pid_to_pidfile pidfile_fd = os.open(pidfile_path, open_flags, open_mode) OSError: [Errno 13] Permission denied: '/tmp/skip/lock' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "lockfile/pidlockfile.py", line 94, in acquire raise LockFailed("failed to create %s" % self.path) lockfile.LockFailed: failed to create /tmp/skip/lock When I rung the same code with Python 2.7, I get the exception output I anticipate: >>> lock.acquire() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "lockfile/pidlockfile.py", line 94, in acquire raise LockFailed("failed to create %s" % self.path) LockFailed: failed to create /tmp/skip/lock It appears exception handling changed in Python 3. How do I suppress the lower level OSError? Thx, Skip -- http://mail.python.org/mailman/listinfo/python-list