Peng Yu wrote:
On Tue, Nov 17, 2009 at 8:25 PM, Benjamin Kaplan
<benjamin.kap...@case.edu> wrote:
On Tue, Nov 17, 2009 at 9:18 PM, Peng Yu <pengyu...@gmail.com> wrote:
It's not clear to me whether WindowsError is available on linux or
not, after I read the document. But I see WindowsError in shutil.py.
Could you somebody let me know what cause the following error?

try:
...   raise WindowsError('WindowsError')
... except WindowsError as e:
...   print e
...
Traceback (most recent call last):
 File "<stdin>", line 3, in <module>
NameError: name 'WindowsError' is not defined
--
does this answer your question?

Python 2.6.4 (r264:75706, Oct 28 2009, 23:01:00)
[GCC 4.2.1 (Apple Inc. build 5646) (dot 1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
import shutil
print shutil.WindowsError
None

But the document doesn't say shutil need to be imported in order to
use WindowsError. Shall the document or the code be corrected?

http://docs.python.org/library/exceptions.html

The WindowsError is available in a Windows build, and I don't directly know if it's available on Linux.

I think shutil is a red-herring here, however. The docs show the implementation of copyTree(), and that function uses WindowsError. However, earlier in the shutil.py file, there is the following trick:

try:
   WindowsError
except NameError:
   WindowsError = None

This has the effect of defining a dummy attribute "WindowsError" WITHIN THIS ONE MODULE, if it's not already in the global namespace. This lets the code in function copytree() deal with an OSError differently on Windows than in other systems.

I do not expect that the name WindowsError of that module was intended to be accessed by user's code. And because some of you see a None value, that tells me that it is indeed not defined for some systems.

I think that fact should be documented in the URL you mention, exceptions.html

But in the meantime, if you're not on a Windows system, you won't see that exception, and if you need to be portable, you may pull the same trick that shutil did.

DaveA

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to