[Tutor] Equivalent exception of os.path.exists()
Dave Angel
davea at ieee.org
Mon Nov 30 21:46:46 CET 2009
spir wrote:
> biboy mendz <bibsmendez at gmail.com> dixit:
>
>
>> http://pastebin.ca/1693849
>>
>> This is end-of-chapter3 exercise of the book Core Python Programming.
>>
>> I'm reading/searching in the book and other materials but is
>> unsuccessful. There are at least 50 exceptions listed but I can't find
>> anything close.
>>
>> I commented out my modified script to just what *should* be applicable.
>> Can you please point me to the right direction? TIA.
>>
>>
>>
>
> What is your question?
> If it's about the type of exception raised when os.path.exists fails, well, sure it's hard to find:
>
> print os.path.exists("foo".bar)
> ==> False
>
> The output beeing a logical value, there is no failure.
> A general method to get a type of exception matching a particuliar kind of error is to provoke an error of this given kind, eg:
>
> f = file("foo.bar")
> ==>
> Traceback (most recent call last):
> File "__essai__.py", line 10, in <module>
> f = file("foo.bar")
> IOError: [Errno 2] No such file or directory: 'foo.bar'
>
> In this case, the type is IOError.
>
> Denis
> ________________________________
>
> la vita e estrany
>
> http://spir.wikidot.com/
>
>
>
As others have pointed out, you need to spell out the question you're
trying to answer. Not all of us have a copy of that book, or have it
handy in any case.
If you're trying to write a function that produces equivalent results to
os.path.exists(), but uses exceptions to do so, you'll need to know
first what that function does. It checks if a path is valid, and refers
to an existing file *or* *directory*. So if you decide that the path
doesn't specify a file, then you also have to check if it specifies a
directory.
It's not actually correct to just use open(), even for the file portion,
because open() may fail if the file is already open exclusively by
another program. For a little while, the file exists, but you may not
open it.
I think if I couldn't use any of the os.path functions, I'd resort to
using os.walk(). Once again, I wouldn't expect any exceptions. I'd
just walk through the whole tree, and see if the desired file was on any
of the returned lists. Don't forget to use case-insensitive comparison
on Windows.
The problem with a poorly reworded question is there are answers that
are perhaps useless to the original problem. If I couldn't use
os.path.exists(), then I'd substitute os.path.isfile() and
os.path.isdir(), checking the one if the other fails. But this wouldn't
raise any exceptions either, so it wouldn't be the learning experience
the author wants.
My suspicion is that the author just wants you to try to do an open()
(readonly), inside a try/except block, and to successfully handle the
exception. Among other things, this requires you to find out which
exception type to use.
DaveA
More information about the Tutor
mailing list